簡體   English   中英

Twig(非symfony)全局變量

[英]Twig (non-symfony) global variables

我已經做了一段時間以來已經有一段時間了。 我使用一個非常古老的模板解析器,我認為是時候轉向Twig了。

它看起來非常好,並且很樂意使用它,但我遇到了一些我似乎無法找到解決方案的問題。 我看到了一些有關我的問題的信息,但無法正常工作,而且大多數情況下它們與symfony兼容。

所以讓我解釋一下;

我使用index.php作為主頁面(frontcontroller)並將我的文件包含在其中。 因為我使用顯示登錄信息的正確菜單等...將顯示在base.html中,因此顯示在每個模板中......我需要找到一種方法在我的index.php文件中設置全局變量數組。

我知道有一個$ twig-> addGlobal('test','這是我的測試); 但需要添加更多。

有getGlobals()的Extention,但你需要在那里提供的數組中手動​​添加它們,我找不到從我的索引傳遞數組的方法。 此外,如果我調查一下,它說它已被棄用。

也許我查看一下,或者Twig不是我的解決方案? 歡迎在此提供任何幫助,並在此先感謝!

尼科。

您可以使用Twig擴展名:

class MyTwigExtension extends Twig_Extension implements Twig_Extension_GlobalsInterface
{
    private $some;

    private $data;

    public function __construct($some, $data) {
        $this->some = $some;
        $this->data = $data;
    }

    public function getGlobals()
    {
        $globals = array();

        // .. create globals by using the properties defined above

        return $globals;
    }

    // ...
}

getGlobals方法確實已棄用,但在代碼中他們說:

@從1.23開始不推薦使用(將在2.0中刪除),請改用Twig_Extension_GlobalsInterface

因此,如果實現Twig_Extension_GlobalsInterface,則不建議使用getGlobals方法。

當您創建Twig_Environment時,添加如下擴展名:

$twig = new Twig_Environment($loader);
$twig->addExtension(new MyTwigExtension($passYour, $data));

所以基本上你將創建全局變量所需的所有數據傳遞給擴展的構造函數。

如何將$ GLOBALS傳遞給Twig_Enviroment?

$ TwigLoader = new Twig_Loader_Filesystem([...]);

$ Twig = new Twig_Environment($ TwigLoader,array('globals'=> $ GLOBALS));

然后在Twig模板中:

{{globals.your_variable_name}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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