как отображать данные json в сетке extjs, которые закодированы в контроллере symfony

привет, пожалуйста, помогите с этим, я пытаюсь отобразить панель сетки Extjs 4.2 с Symfony 2 в качестве бэкэнда.

мой config.yml

сетка:

pattern:   /grid
defaults:  { _controller:ExtAssExampleBundle:displaygrid:display}
requirements: { _format: (json), _method: GET }

мой контроллер

класс displaygridController расширяет контроллер

{

public function displayAction()
{
      $repository = $em->getRepository('ExtAssexampdbBundle:movies');
$items = $repository->show();
    $response = json_encode($items);
   return $this->render('ExtAssExampleBundle:Default:grid.html.php',array('response'=>$response));
}

}

сетка.html.php

Ext.onReady (функция ()

{ Ext.define('фильм', {

                extend: 'Ext.data.Model',
                fields: [
                    {name:'id', type: 'int'},

                    {name:'title',type: 'string'}, 

                    {name:'director',type: 'string'},

                    {name:'released',type: 'string'},

                    {name:'genre', type: 'int'},

                    {name:'tagline',type:'string'}

                ] } );

var mystore = Ext.create('Ext.data.JsonStore', 
{

    model: 'movie',
    autoSync: true,
    autoLoad: true,
    data:response,
    proxy: {
            type:'ajax',
            url:' ',

//что мне нужно передать здесь

            reader: {

                    type:'json',
                    root: 'movies'

                    },
             writer:{
                    encode: true,
                        writeAllFields: true,
                    type: 'json',
                    root: 'data'
                }
            },
});//store completed
   var grid = Ext.create('Ext.grid.Panel', 
{

    style: 'margin-top: 1%; margin-left: 24%',
    store: mystore,
    id:'grid',
    width: 700,
    height: 300,
    title: 'Movie Details',
    collapsible: true,
    closable:true,
    maximizable: true,
    frame:true,
    dirty:false,
    draggable: true,
    stripedRows: true,
    columns:
               [
        {header: 'MovieName', width: 100, sortable: true, dataIndex:response[0].title,editor:{xtype:  'textfield',allowBlank:false} },
        {header: 'Director Name', width: 100, sortable: true, dataIndex: 'director',editor: 'textfield',allowBlank:false},
{header: 'Released Date', width: 150, sortable: true, dataIndex: 'released',editor: 'datefield',renderer: Ext.util.Format.dateRenderer('Y-m-d')},

{header: «Жанр», ширина: 150, sortable: true, dataIndex: «genre», editor: «numberfield»,}, {header: «Tagline», ширина: 200, sortable: true, dataIndex: «tagline», редактор: 'текстовое поле'},
],

});
            mystore.load(); 
            grid.render('table')

});

проблема в том, как я могу получить доступ к ответу $, который был отправлен контроллером symfony2, и отобразить значения в сетке Extjs 4.2. пожалуйста, помогите с этим


person Choco    schedule 26.06.2013    source источник
comment
пожалуйста, исправьте код в своем вопросе :) по какой-либо конкретной причине вы дважды настроили контроллер-маршрут с разными URL-адресами - один раз с использованием аннотации, один раз с использованием конфигурации yml?   -  person Nicolai Fröhlich    schedule 26.06.2013
comment
пожалуйста, проверьте это сейчас nifr я отредактировал свой код   -  person Choco    schedule 27.06.2013
comment
я попробовал эти аннотации, потому что могу ли я передать эти значения аннотации, указанные в URL-адресе extjs, но это не работает, поэтому я удалил его, пожалуйста, помогите с этим   -  person Choco    schedule 27.06.2013
comment
я решил свою проблему спасибо за ваше предложение   -  person Choco    schedule 27.06.2013


Ответы (1)


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

класс dispjsonController расширяет контроллер

{

публичная функция sendjsonAction() {

$request = $this->getRequest();
$em = $this->getDoctrine()->getManager();
$repository = $em->getRepository('ExtAssexampdbBundle:movies');
$items = $repository->show();
$serializer = new Serializer(array(new GetSetMethodNormalizer()), array('json' => new JsonEncoder()));
$response = new Response($serializer->serialize($items, 'json')); 
$response->headers->set('Content-Type', 'application/json');
return $response; 
}

}

в маршрутизации задайте маршрут для dispjsoncontroller

и теперь в поле зрения укажите как:/app_dev.php/sendjson

person Choco    schedule 27.06.2013