2

您好,我在使用宏时遇到问题。

在 macros.html.twig 中

{% macro panel_header(title) %}
<div class="panel panel-default">
    <div class="panel-heading">
        <h3 class="panel-title">{{ title|escape('html') }}
    </div>
{% endmacro %}

在 profile.show.html.twig

{% import "macros.html.twig" as macros %}
{{ macros.panel_header("hello"  {{profile.name}} ) }}

上面的例子不起作用,因为它要求参数用逗号分隔

{{ macros.panel_header("hello  {{profile.name}}" ) }}

这会输出“hello {{profile.name}}”,这当然是有意义的

所以我的问题是如何将字符串和变量作为单个参数添加到宏中?

4

2 回答 2

3

字符串插值(#{expression})允许任何有效的表达式出现在双引号字符串中。评估该表达式的结果被插入到字符串中:

{{ "foo #{bar} baz" }}
{{ "foo #{1 + 2} baz" }}

{{ macros.panel_header("hello #{profile.name}") }}

在 Twig 1.5 中添加了字符串插值

于 2013-11-06T02:41:18.857 回答
2

找到答案: http ://twig.sensiolabs.org/doc/templates.html#other-operators

~:将所有操作数转换为字符串并将它们连接起来。{{“你好”~名字~“!” }} > 会返回(假设名字是 'John')Hello John!。

所以在我的例子中这是有效的:

{{ macros.panel_header("hello" ~ profile.name ) }}
于 2013-09-28T15:33:06.660 回答