是否有可能在twig中注册一个被调用的回调,当一个模板变量不存在以返回默认值或类似魔法__get方法时?
答案 0 :(得分:1)
摘自: JSFiddle Demo - View it in print preview
{{ 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 extension
country
filter
有 {{ myNullVariable|default('FR'|country) }}
:
/**
* @return int
*/
public function add ($a, $b)
{
return $a+$b;
}
/**
* @return array
*/
public function toArray ($a, $b)
{
return array($a, $b);
}
答案 1 :(得分:0)
您应该扩展Twig_Template
,并覆盖函数getContext
。此函数的默认行为是在未设置变量时抛出异常,并且它应该只引发错误,而不是结束渲染过程。
请注意,我使用旧的Twig版本,因此可能会有所更改。要调用的函数是$twig->enableStrictVariables();