Торт php с Ext js через отображение данных в сетке - PullRequest
0 голосов
/ 01 сентября 2011

Я создаю CakePHP с видом сетки Extjs.

Для этого я создаю,

1) один файл контроллера movie_controller, в который я записываю

function index() {
        $this->recursive = 0;                                      
        $this->set('movies', $this->Movie->find("all"));

    }

2) второе создание файла index.ctp в представлении / movies / index.ctp

 <?php echo  '{"rows":'.$javascript->Object($movies).'}'; ?>

3) затем в js-файле я вызываю этот файл index.ctp

не получает данные в сетке. при отладке в firebug выводится этот массив

{ "строка": [{ "Movie": { "ID": "1", "дата _": "1970-01-01", "нота": "Note13455 -", "ASSET_ID": "1 "," maint_picture ":" "," maint_condition1 ":" Плохо "," maint_condition2 ":" Новый "," maint_condition3 ":" Отлично "," maint_condition4 ":" Хорошо "}}, {" Movie ": {" идентификатор ":" 2" , "дата _": "2009-03-20", "ноты": "Примечание2", "ASSET_ID": "1", "maint_picture": нулевой, "maint_condition1": "Отлично",» maint_condition2 ":" Отлично», "maint_condition3": "Новый", "maint_condition4": "Плохо"}}]}

==> В этом файле json как я могу удалить массив Movie, который отображается в начале всей записи.

Ответы [ 3 ]

0 голосов
/ 02 сентября 2011

, если хотите удалить первый массив, удалите из массива, мы должны один за другим печатать массив в сетке.готово.

<?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;
 ?>  
0 голосов
/ 02 сентября 2011

Ты становишься ближе. Попробуйте выполнить всю работу с вашей переменной $movies в контроллере (помните шаблон MVC! Не ломайте его!).

Вы можете сделать это, сделав что-то вроде ...

// 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;
    }
}

Затем превратите это в объект json.

В основном я думаю, что это не загрузка данных, потому что ваш JSON выглядит так

{ "строка": [{ "Movie": { "ID": "1", "дата _": "1970-01-01", "нота": "Note13455 -", "ASSET_ID": "1 "," maint_picture ":" "," maint_condition1 ":" Плохо "," maint_condition2 ":" Новый "," maint_condition3 ":" Отлично "," maint_condition4 ":" Хорошо "}}, {" Movie ": {" идентификатор ":" 2" , "дата _": "2009-03-20", "ноты": "Примечание2", "ASSET_ID": "1", "maint_picture": нулевой, "maint_condition1": "Отлично",» maint_condition2 ":" Отлично», "maint_condition3": "Новый", "maint_condition4": "Плохо"}}]}

это должно выглядеть так

{ "строки": [{ "Идентификатор": "1", "Дата _": "1970-01-01", "отмечает": "Note13455-", "ASSET_ID": "1", "Maint_picture": "", "Maint_condition1": "Плохо", "maint_condition2": "New", "Maint_condition3": "Отлично", "Maint_condition4": "Хорошо" }, { "Идентификатор": "2", "Дата _": "2009-03-20", «отмечает»: «Примечание2», "ASSET_ID": "1", "Maint_picture": нулевой, "Maint_condition1": "Отлично", "Maint_condition2": "Отлично", "Maint_condition3": "Новый", "Maint_condition4": "Плохо" } ]}

Вы хотите удалить часть "Movies": {..object..}, так что это просто массив объектов, таких как {id: 1},{id: 2},{id: 3} и т. Д.

Убедитесь, что в вашем корне JsonReader установлены строки как ваш корень !!

var reader = new Ext.data.JsonReader({
    root: 'rows'
});
0 голосов
/ 02 сентября 2011
<?php echo  '{"rows":'.$javascript->Object($movies['Movie']).'}'; ?>
...