[英]Twig 2.0 error message “Accessing Twig_Template attributes is forbidden”
自升級到Twig 2.0后,我收到錯誤消息, Accessing Twig_Template attributes is forbidden
。 引用的行包含{{ include }}
或宏調用。
在Twig 2.0中{{ import }}
'ed宏不再繼承到子模板,請參閱https://github.com/twigphp/Twig/issues/2336
解決方案: 您需要在每個.twig文件中導入所需的宏。
如果錯誤顯示在包含{{ include }}
或{{ extends }}
,則必須查看正在包含/擴展的模板,並在那里導入宏。
如果您使用宏有很多Twig文件,通過Twig擴展 定義全局Twig函數可能更容易且更不容易出錯。 這樣您就不需要在每個文件中導入宏(這可能會在將來的Twig版本中修復)。
例如,當我有
{% macro error(message, dismissible=true) %}
{# Error display code #}
{% endmacro %}
我現在在一個名為UtilitiesExtension
的Twig Extension中定義了以下函數:
public function getFunctions()
{
return array(
// ...
new \Twig_SimpleFunction('error', array($this, 'error')),
);
}
public function error($message, $dismissible = true) {
return $this->twig->render('patterns/utils/error.html.twig', [
'text' => $message,
'limit' => $dismissible,
]);
}
然后,您需要使用函數名稱替換宏調用; 請注意,您不能在函數名稱中使用點。
這個解決方案很簡潔,因為Twig宏應該等同於PHP函數。 當然,這應該適應您的需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.