我正在使用defaultTwig过滤器在我的宏中指定参数默认值:
{% macro base(type, title, content, separator, dismissable) %}
{% spaceless %}
{% debug dismissable %}
{% set separator = separator|default('!') %}
{% set dismissable = dismissable|default(true) %}
{% debug dismissable %}
{# Beginning outputting... #}
{% endspaceless %}
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)
该问题是,dismissable参数类型应该是boolean.但是,在传递false过滤器时会对其进行求true值并指定默认值.一个示例输出:
{{ base('success', 'Title', 'Hello', '!', false) }}
boolean false
boolean true
Run Code Online (Sandbox Code Playgroud)
这是一个错误吗?这是(部分)过滤器描述:
如果值未定义或为空,则默认过滤器返回传递的默认值,否则返回变量的值.
false甚至没有提到布尔值的评估.我的临时解决方法是:
{% set dismissable = …Run Code Online (Sandbox Code Playgroud)