マクロdefault
で引数のデフォルトを指定するために Twig フィルターを使用しています。
{% 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 %}
問題は、dismissable
引数の型が である必要があることですboolean
。ただし、フィルターを渡すと、それが評価され、デフォルト値false
が割り当てられます。出力true
例:
{{ base('success', 'Title', 'Hello', '!', false) }}
boolean false
boolean true
これはバグですか?フィルターの説明 (の一部) は次のとおりです。
デフォルト フィルタは、値が未定義または空の場合は渡されたデフォルト値を返し、それ以外の場合は変数の値を返します。
ブール値の評価についてfalse
も言及されていません。私の一時的な回避策は次のとおりです。
{% set dismissable = dismissable is not defined or dismissable is null ?
true : dismissable %}