【问题标题】:how to display the json data in extjs grid which is encoded in symfony controller如何在 symfony 控制器中编码的 extjs 网格中显示 json 数据
【发布时间】:2013-06-26 13:21:40
【问题描述】:

您好,请帮助我尝试显示一个以 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));
}

}

grid.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:'Genre', width:150, sortable:true, dataIndex:'genre',editor:'numberfield',}, {标题:'标语',宽度:200,可排序:true,dataIndex:'标语',编辑器:'textfield'},
],

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

});

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

【问题讨论】:

  • 请修复您问题中的代码 :) 您使用不同的 url 设置控制器路由两次的任何特殊原因 - 一次使用注释,一次使用 yml 配置?
  • 请现在检查一下,我已经编辑了我的代码
  • 我尝试了这些注释,因为我是否可以传递这些注释值在 extjs 的 url 中给出,但它不起作用,所以我删除了它,请帮助解决这个问题
  • 我已经解决了我的问题,感谢您的建议

标签: symfony extjs4.2


【解决方案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的路由

现在在 url 中显示为:/app_dev.php/sendjson

【讨论】:

    猜你喜欢
    • 2012-12-28
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 2013-02-26
    • 2012-02-27
    • 2012-05-05
    相关资源
    最近更新 更多