0

嗨,请帮助我尝试显示一个以 symfony 2 作为后端的 Extjs 4.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:'流派', width:150, sortable:true, dataIndex:'genre',editor:'numberfield',}, {header: 'Tagline', width: 200, sortable: true, dataIndex: 'tagline',编辑器:'文本字段'},
],

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

});

问题是我如何访问 symfony2 控制器发送的 $response 并在 Extjs 4.2 网格中显示值。请帮助解决这个问题

4

1 回答 1

0

使用另一个控制器将 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 的路由

现在在 url 中查看为:/app_dev.php/sendjson

于 2013-06-27T03:55:51.983 回答