开发者

Cake php with Ext js through display data in grid Problem

开发者 https://www.devze.com 2023-04-01 15:43 出处:网络
I create cakephp with extjs grid view . For that i create, 1)one movie_controller controller file in which i write

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'
});
0

精彩评论

暂无评论...
验证码 换一张
取 消