twig宏参数是字符串和变量的组合

twig宏参数是字符串和变量的组合,twig,Twig,你好,我的宏有问题 在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 %} {% import "ma

你好,我的宏有问题

在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 %}
{% import "macros.html.twig" as macros %}
{{ macros.panel_header("hello"  {{profile.name}} ) }}
上面的示例不起作用,因为它要求用逗号分隔参数

{{ macros.panel_header("hello  {{profile.name}}" ) }}
这将输出“hello{{profile.name}”,这当然有意义

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

在以下内容中找到了答案:

~:将所有操作数转换为字符串并将其串联。{{{“Hello”~name~“!”}>将返回(假设名称为“John”)Hello John

因此,在我的示例中,这是有效的:

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

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

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

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

字符串插值是在Twig 1.5中添加的

我想您的意思是在hello:“hello”~profile.name之后添加一个空格,否则您将输出“hellomilio”而不是“hello milio”