当变量不存在时,调用函数


Twig call function when variable doesn't exists

是否有可能在twig中注册一个被调用的回调,当模板变量不存在时返回默认值或类似魔术__get方法的东西?

摘自: http://twig.sensiolabs.org/doc/filters/default.html


{{ var|default('var is not defined') }}
{{ var.foo|default('foo item on var is not defined') }}
{{ var['foo']|default('foo item on var is not defined') }}
{{ ''|default('passed var is empty')  }}

想象你有一个twig extensioncountry, filter:

 {{ myNullVariable|default('FR'|country) }}

您应该扩展Twig_Template,并覆盖getContext函数。这个函数的默认行为是在没有设置变量时抛出异常,它应该只抛出一个错误,而不是结束呈现过程。

请注意,我使用的是旧的Twig版本,所以这可能有变化。要调用的异常函数是$twig->enableStrictVariables();