2016-12-27 13 views
0

リットルでデータベースからJSONデータの上にループが私のコントローラに持っているだから、現在小枝

{% 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"}} 

l icon_urlにアクセスして表示する必要があります。何か案は?私は現在{{ 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), 
]); 

次に、あなたの小枝にあなたのよう呼び出すことができます必要があります:

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

私はあなたが必要な場合json変数とnon-json変数の両方を使用します。必要に応じて調整します。

それがうまくいくかどうかわかりますが、私はそうすべきだと思いますが、あなたは別のものが必要かもしれません。

+0

こんにちはケルビンです。これは機能しましたか?そうであれば、チェックマークをクリックしてこれを正解とマークできますか?ありがとう! –