2015-09-19 3 views
1

У меня проблемы с передачей значений объектов моим шаблонам ветви.отображение значений объекта symfony2 в шаблоне twig

Вот некоторые из моего кода контроллера, который показывает содержание объекта:

if (!$request->isXmlHttpRequest()) { 
      $manejador = new Manejador(); 
      $temas=new ArrayList(); 
      $temas=$manejador->scrollingAjax(); 
      return $this->render(
        'UsuarioBundle:Default:index.html.twig', 
       array(
        'temas'=>$temas)); 
     } 

Вот, мой ArrayList код.

class ArrayList { 
    private $list = array(); 
    public function Add($obj) 
    { 
    .... 
    } 
    public function Remove($key) 
    { 
     ... 
    } 

    public function Size() 
    { 
    .... 
    } 

    public function IsEmpty() 
    { 
    .... 
    } 

    public function GetObj($key) 
    { 
    ..... 
    } 

    public function GetKey($obj) 
    { 
    ..... 
    } 
    } 

Вот некоторые из моего кода класса Tema

class Tema { 
    private $texto; 
    private $titulo; 
    private $usuario; 
    private $fecha; 
    private $numeroRespuesta; 

    function getnumeroRespuesta(){ 
     return $this->numeroRespuesta; 
    } 

    function getUsuario(){ 
     return $this->usuario; 
    } 
    function getTitulo(){ 
     return $this->titulo; 
    } 
    function getTexto(){ 
     return $this->texto; 
    } 
    ...... 

Тогда в моем шаблоне веточку я хочу, чтобы отобразить значение «TEMA» но результаты пустые значения

</thead> 
    <tbody id="cuerpo-tabla"> 
     <tr> 
     {% for tema in temas %} 
      <th width="10%">{{ tema.fecha }}</th> 
      <th width="70%">{{ tema.titulo }}</th> 
      <th width="10%">{{ tema.usuario }}</th> 
      <th width="10%">{{ tema.numeroRespuesta }}</th> 

      {% endfor %} 
     </tr> 
    </tbody> 

когда я делаю var_dump ($ temas), результатом является:

object(people\UsuarioBundle\Modelo\Tema)[287] 
     private 'texto' => string '' (length=0) 
     private 'titulo' => string 'titulo1?' (length=37) 
     private 'usuario' => string 'PlayBackWow' (length=11) 
     private 'fecha' => string '21:27' (length=5) 
     private 'numeroRespuesta' => string '0' (length=1) 
    1 => 
    object(people\UsuarioBundle\Modelo\Tema)[286] 
     private 'texto' => string '' (length=0) 
     private 'titulo' => string 'titulo2' (length=25) 
     private 'usuario' => string 'OsoMiltro' (length=9) 
     private 'fecha' => string '21:31' (length=5) 
     private 'numeroRespuesta' => string '0' (length=1) 
    2 => 
+0

В своем коде, я не могу видеть «TEMA» объявлен как свойство «Тема» ... где вы ожидаете, что tema.tema исходит? – Ragdata

+0

Вы пробовали 'var_dump' на' $ temas', чтобы увидеть его содержимое? – Heah

+0

Можете ли вы зайти по темам в обычный php-код? Я не вижу реализации интерфейса Iterator. Подумайте, просто используя массив. Объекты массива имеют тенденцию быть менее полезными на практике. – Cerad

ответ

0

Кажется, вы пытаетесь перебрать переменную $temas, которая является объектом ArrayList без публичных объектов. Кроме того, предполагаемое поведение заключается в том, чтобы перебрать его внутреннее свойство $list, я думаю. Чтобы сделать объект ArrayList полезным в контексте foreach, попробуйте реализовать Traversable и его конкретные подинтерфейсы. еще лучше, для простых требований вы можете:

  • просто использовать простой родной PHP array
  • использование ArrayObject
+0

Это уже не объект (я думаю), посмотрите на следующую строку '$ Temas = $ manejador-> scrollingAjax(); '. – malcolm

+0

Я предположил, что метод возвращает ArrayList, как было предложено в предыдущей строке. –

+0

Эта строка не имеет смысла, потому что позже он устанавливает переменную '$ themas' в массив, возвращаемый таинственным методом' $ manejador-> scrollingAjax() '(как показывает« var_dump() »). – malcolm