所以目前我已经进入了我的控制器:
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"}}
我需要访问并显示icon_url。有任何想法吗? l目前尝试了{{ theme.preview.icon_with_video_preview.icon_url }}
但是收到错误,说这个数组无法转换为字符串。
答案 0 :(得分: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 %}
如果您需要同时使用json和非json变量,我将两者都包含在控制器中。根据需要进行调整。
如果有效,请告诉我们,我认为应该如此,但您可能需要不同的东西。
答案 1 :(得分:0)
您是否尝试过转发不同的东西以查看它是否返回相同的错误?
{{ dump(theme.preview) }}
{{ dump(theme.preview.icon_with_video_preview) }}
{{ dump(theme.preview.icon_with_video_preview.icon_url) }}
最终,您可能需要使用twig的attribute
函数访问数组键。即:
{{ attribute(theme.preview, 'icon_with_video_preview').icon_url }}