Cake php with Ext js through display data in grid Problem
I create cakephp with extjs grid view .
For that i create,
1)one movie_controller controller file in which i write
function index() {
$this->recursive = 0;
$this->set('movies', $this->Movie->find("all"));
}
2)second create index.ctp file in view/movies/index.ctp
<?php echo '{"rows":'.$javascript->Object($movies).'}'; ?>
3)then in js file i call this index.ctp file
not getting data in grid. when debugging in firebug it's display this array
{"rows":[{"Movie":{"id":"1","date_":"1970-01-01","notes":"Note13455-","asset_id":"1","maint_picture":"","maint_condition1":"Poor","maint_condition2":" New","maint_condition3":"Excellent","maint_condition4":"Good"}},{"Movie":{"id":"2","date_":"2009-03-20","notes":"Note2","asset_id":"1","maint_picture":null,"maint_condition1":"Excellent","maint_condition2":"Excellent","maint_condition3":"New","maint_condition4":"Poor"}}]}
开发者_JAVA百科==>In this json file how can i remove Movie array which is display in start all record.
<?php echo '{"rows":'.$javascript->Object($movies['Movie']).'}'; ?>
if want to remove first array remove from array we have to one by one array print in grid. its done.
<?php
$output='{"rows":[';
$total=$ta=count($movies);
for($i=0;$i<$total;$i++)
{
$t=$i+1;
if($t==$total)
{
$output.=$javascript->Object($movies[$i]['Movie']);
}
else
{
$output.=$javascript->Object($movies[$i]['Movie']).',';
}
}
$output.=']}';
echo $output;
?>
You're getting closer. Try doing all the work with your $movies
variable in the controller (remember the MVC pattern! Don't break it!).
You can do so by doing something like...
// in your controller
$data = null;
$movies = $this->Movie->find('all');
foreach ($movies as $key => $value) {
foreach ($value['Movie'] as $k => $v {
$data['rows'][$key][$k] = $v;
}
}
Then turn that into a json object.
Basically I think it's not loading the data because your json looks like this
{"rows":[{"Movie":{"id":"1","date_":"1970-01-01","notes":"Note13455-","asset_id":"1","maint_picture":"","maint_condition1":"Poor","maint_condition2":" New","maint_condition3":"Excellent","maint_condition4":"Good"}},{"Movie":{"id":"2","date_":"2009-03-20","notes":"Note2","asset_id":"1","maint_picture":null,"maint_condition1":"Excellent","maint_condition2":"Excellent","maint_condition3":"New","maint_condition4":"Poor"}}]}
it should look like this
{ "rows": [{ "id":"1", "date_":"1970-01-01", "notes":"Note13455-", "asset_id":"1", "maint_picture":"", "maint_condition1":"Poor", "maint_condition2":" New", "maint_condition3":"Excellent", "maint_condition4":"Good" }, { "id":"2", "date_":"2009-03-20", "notes":"Note2", "asset_id":"1", "maint_picture":null, "maint_condition1":"Excellent", "maint_condition2":"Excellent", "maint_condition3":"New", "maint_condition4":"Poor" } ]}
You want to remove the "Movies": {..object..}
part, so it's just an array of objects like {id: 1},{id: 2},{id: 3}
etc.
Make sure you have rows set as your root in your JsonReader!!
var reader = new Ext.data.JsonReader({
root: 'rows'
});
精彩评论