2016-12-27 1 views
0

Так в настоящее время л попал в мой контроллер:Looping над данными JSON из базы данных в веточке

public function indexAction() 
{ 
    $repository = $this->getDoctrine()->getRepository('ApiBundle:Request'); 

    $themes = $repository->findAll(); 

    return $this->render('ApiBundle:Default:index.html.twig', ['themes' => $themes]); 
} 

и в моей веточке:

{% for theme in themes %} 
    <div am-col="md-6"> 
     <div am-row> 
      <div am-col="md-3"> 
       {{ theme.preview|json_encode }} 
      </div> 
      <div am-col="md-8"> 
       {{ theme.name }} 
      </div> 
     </div> 
    </div> 
{% endfor %} 

Теперь theme.previews возвращает JSON, как показано ниже:

{"icon_with_video_preview":{"icon_url":"https:\/\/0.s3.envato.com\/files\/170231072\/design-wordpress80.png","landscape_url":"https:\/\/0.s3.envato.com\/files\/170231083\/design-wordpresspreview.jpg","video_url":"https:\/\/0.s3.envato.com\/h264-video-previews\/02e0816d-0957-45c4-af2c-792e37bcc37a\/14727479.mp4"}} 

Мне нужно открыть и отобразить страницу. Есть идеи? В настоящее время я пробовал {{ theme.preview.icon_with_video_preview.icon_url }}, но получаю сообщение о том, что этот массив не может быть преобразован в строку.

+0

Возможно, вы захотите опубликовать точный код, который вы использовали, точную ошибку и соответствующие части вашего объекта/сущности. – ccKep

ответ

0

Вы пытались сбрасывать разные вещи по пути, чтобы увидеть, возвращает ли она ту же ошибку?

{{ dump(theme.preview) }} 
{{ dump(theme.preview.icon_with_video_preview) }} 
{{ dump(theme.preview.icon_with_video_preview.icon_url) }} 

В конечном счете, возможно, потребуется доступ к ключу массива с помощью функции attribute прутик в. то есть:

{{ attribute(theme.preview, 'icon_with_video_preview').icon_url }} 

См: http://twig.sensiolabs.org/doc/functions/attribute.html

1

Я думаю, что в этом случае вам может понадобиться отправить JSON закодированные переменную из контроллера так:

return $this->render('ApiBundle:Default:index.html.twig',[ 
    'themes' => $themes, 
    'json_themes' => json_encode($themes), 
]); 

Затем в Twig вы можете назвать как вам необходимо:

{% for jtheme in json_themes %} 
    {{ jtheme.preview.icon_with_video_preview.icon_url }} 
{% endfor %} 

Я включил оба в контроллер на случай, если вам нужно se как json, так и non-json. При необходимости отрегулируйте.

Сообщите нам, если это работает, я думаю, что это необходимо, но вам может понадобиться что-то другое.

+0

Hi there Kelvin. Это работало? Если да, можете ли вы отметить это как правильный ответ, нажав на галочку. Благодаря! –