簡體   English   中英

Twig 2.0錯誤消息“禁止訪問Twig_Template屬性”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM