Symfony2动态资产在树枝模板中

时间:2014-04-13 11:35:18

标签: symfony dynamic twig assetic

我正在使用资产(symfony2,twig)尝试显示图像。图像的URL地址取决于捆绑包。

{% image '@'{{ bundleName }}'/Resources/public/images/logo.png' %}
   <img src="{{ asset_url }}" />
{% endimage %}

但它不起作用。

2 个答案:

答案 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>