在 template_from_string 函数中使用树枝过滤器

Use a twig filter in template_from_string function

我正在使用 Rainlab TranslateVojta Svoboda Twig Extensions 插件使用 October CMS 创建一个多语言网站。 我正在使用树枝函数 template_from_string 在我的一个模板文件中创建一个 link 按钮。

一切正常 if 我在 link 属性中使用 |media 过滤器,以获取媒体文件的 url . 但是,如果我使用 |page 过滤器来获取页面 url,我会收到 Unknown "page" filter.

的错误
<!-- It works: -->
<div>
    {% set btn = {
        'link': 'foobar.jpg',
        'label': 'Where is FooBar »'
    } %}
    {{ include(template_from_string('<a class="btn btn-promo btn-white move" href="{{ btn.link|media }}" role="button">{{ btn.label }}</a>')) }}
</div>


<!-- It does not work: -->
<div>
    {% set btn = {
        'link': 'foobar',
        'label': 'Where is FooBar »'
    } %}
    {{ include(template_from_string('<a class="btn btn-promo btn-white move" href="{{ btn.link|page }}" role="button">{{ btn.label }}</a>')) }}
</div>

我被这个问题困住了,我的问题是:我怎样才能让两个过滤器都工作? 预先感谢您的帮助。

我认为你忽略了一些东西:)

你可以这样使用

<div>
    {% set btn = {
        'link': 'fooba'|page, <-- HERE
        'label': 'Where is FooBar »'
    } %}
    {{ include(template_from_string('<a class="btn btn-promo btn-white move" href="{{ btn.link }}" role="button">{{ btn.label }}</a>')) }}
</div>

你可以使用filter on main scope直接传递filtered value。您不需要在 template_from_string

中使用过滤器

如有疑问请评论。