2013-06-26 3 views
0

привет, пожалуйста, помогите с этим iam, пытаясь отобразить панель сетки Extjs 4.2 с symfony 2 как backend.как отображать данные json в сетке extjs, которая закодирована в контроллере symfony.

мой 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')}, 

{заголовок: 'Жанр', ширина: 150, сортировка: правда, dataIndex: 'жанр', редактор: "Numbe rfield»,}, { заголовка: 'Подзаголовок', ширина: 200, сортируемая: правда, dataIndex: 'Подзаголовок', редактор: 'текстового поля'},
],

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

});

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

+0

пожалуйста исправить код в ваш вопрос :) любая конкретная причина, по которой вы дважды устанавливаете маршрут контроллера с разными URL-адресами - после использования аннотации, после использования yml-конфигурации? – nifr

+0

, пожалуйста, проверьте его сейчас nifr, я отредактировал мой код – Choco

+0

Я пробовал эти аннотации, потому что, могу ли я передать эти значения аннотации, указан в url из extjs, но он dooes не работает, поэтому я удалил его, пожалуйста, помогите с этим – Choco

ответ

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