I am trying to use Emberjs with PHP as backend.
Here's my app.js
,
App = Ember.Application.create({});
App.IndexRoute = Ember.Route.extend({
renderTemplate : function(controller) {
this.render('MyApp', {
controller : controller
});
},
model : function() {
return App.MyTemplateModel.find();
}
});
App.IndexController = Ember.ArrayController.extend({
filteredContent : Ember.computed.oneWay("content"),
last : function() {
var lastName = App.controller.get('selectedProgrammer.last_name');
var filtered = this.get('content').filterProperty('last_name', lastName);
this.set("filteredContent", filtered);
},
refresh : function() {
var refresh = this.get('content');
this.set("filteredContent", refresh);
}
});
App.MyTemplateModel = Ember.Model.extend({
id : Ember.attr(),
last_name : Ember.attr(),
first_name : Ember.attr(),
suffix : Ember.attr(),
expiration : Ember.attr()
});
App.controller = Ember.Object.create({
selectedProgrammer : null,
content : [Ember.Object.create({
last_name : "Solow",
id : 1
}), Ember.Object.create({
last_name : "Arbogast",
id : 2
}), Ember.Object.create({
last_name : "Dorfman",
id : 3
}), Ember.Object.create({
last_name : "Eliason",
id : 4
})]
});
App.MyTemplateModel.url = "user.php";
App.MyTemplateModel.adapter = Ember.RESTAdapter.create({
ajaxSettings: function(url, get) {
return {
url: url,
type: get
};
}
});
var existing = App.MyTemplateModel.find();
App.MyTemplateModel.camelizeKeys = true;
and my PHP code,
<?php
$con = mysql_connect("localhost","root","school");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("codeigniter", $con);
$id = $_GET['id'];
$query = "SELECT * FROM `user`";
$comments = mysql_query($query);
while($row = mysql_fetch_array($comments, MYSQL_ASSOC))
{
$name = $row['first_name'];
echo json_encode($name);
}
mysql_close($con);
?>
But I am getting this on console,
GET http://ember.local/user.php.json 404 (Not Found)
I can see it is adding .json to php file but why? Moreover, how do I get around with it or how do I implement my own Ajax calls in Ember? Moreover, I am using Ember Model in the code.
ember-model does not provide out pf the box any configuration option to change this behaviour, e.g. adding the
.json
at the end of the URL.So a possible solution could be to reopen the
RESTAdapter
and override thebuildURL
function to not include the.json
.But this is not that future proof if the original code changes and you want to update the lib you had to change also your override.
Hope it helps.