我正在使用资产(symfony2,twig)尝试显示图像。图像的URL地址取决于捆绑包。
{% image '@'{{ bundleName }}'/Resources/public/images/logo.png' %}
<img src="{{ asset_url }}" />
{% endimage %}
但它不起作用。
答案 0 :(得分:0)
您需要使用concatenation operator(~
)在twig标记内组合表达式:
{% image '@' ~ bundleName ~ '/Resources/public/images/logo.png' %}
答案 1 :(得分:0)
我找到了解决方法。我的情况是我将图像存储在Resources / images下的子目录中。我想要它们,而不是web目录,因为它们只会暂时使用,我只想删除不再需要的子目录,而不必删除各个子目录中的图像。所以,我无法使用asset()函数(因为图像在捆绑中)并且资产似乎不支持动态图像。
我需要根据特定条件显示2个横幅图像中的一个。我结束了创建一个使用资产生成每个图像的树枝模板(2个图像,所以2个模板)。
<a href="{{ vm.bannerLinkUrl }}">
{% image '@MyBundle/Resources/public/images/path/to/image/banner.jpg' %}
<img src="{{ asset_url }}">
{% endimage %}
</a>
我创建了一个横幅&#39;我的Home控制器中的动作来渲染模板。
public function bannerAction()
{
/* code to load data into a view model object called $vm */
$template = $this->render(
"MyBundle:Home:path/to/banner-template-subdir/{$vm->bannerType}-banner.html.twig",
['vm' => $vm]
);
return $template;
}
最后,我使用渲染功能从主页面模板生成正确的横幅。
<div class='banner'>
{{ render(controller("MyBundle:Home:banner")) }}
</div>