Php 细枝(非symfony)全局变量

Php 细枝(非symfony)全局变量,php,twig,Php,Twig,我已经有一段时间没做什么了。我使用了一个非常旧的模板解析器,我认为是时候转向Twig了 它看起来很好,我很乐意使用它,但我遇到了一些问题,我似乎找不到解决办法。我看到一些关于我的问题,但不会工作,大部分时间他们与symfony 让我解释一下 我使用index.php作为主页(frontcontroller),并将我的文件包含在其中。由于我使用的是显示登录信息等的右菜单。。。这将显示在base.html中,从而显示在每个模板中。。。我需要找到在index.php文件中设置全局变量数组的方法 我知道

我已经有一段时间没做什么了。我使用了一个非常旧的模板解析器,我认为是时候转向Twig了

它看起来很好,我很乐意使用它,但我遇到了一些问题,我似乎找不到解决办法。我看到一些关于我的问题,但不会工作,大部分时间他们与symfony

让我解释一下

我使用index.php作为主页(frontcontroller),并将我的文件包含在其中。由于我使用的是显示登录信息等的右菜单。。。这将显示在base.html中,从而显示在每个模板中。。。我需要找到在index.php文件中设置全局变量数组的方法

我知道有一个$twig->addGlobal('test','这是我的测试);但需要增加很多

getGlobals()有一个扩展,但是您需要手动将它们添加到那里提供的数组中,我找不到一种方法来将数组从我的索引传递给它。此外,如果我调查一下,它会说它不受欢迎

也许我看了一下,或者树枝不是我的解决办法? 欢迎任何帮助,并提前感谢

尼科。

去小树枝环境怎么样

$TwigLoader=新的细枝加载器文件系统([…])

$Twig=新的Twig_环境($TwigLoader, 排列( “globals”=>$globals ) );

然后在细枝模板中:


{{globals.your_variable_name}

您可以使用细枝扩展名:

类MyTwigeExtension扩展Twig_扩展实现Twig_扩展\u全局接口
{
私人的,约元;;
私人数据;
公共函数构造($some$data){
$this->some=$some;
$this->data=$data;
}
公共函数getGlobals()
{
$globals=array();
//…使用上面定义的属性创建全局变量
返回$globals;
}
// ...
}
getGlobals方法确实不受欢迎,但在代码中他们说:

@从1.23开始就被弃用(将在2.0中删除),改为实现Twig_Extension_GlobalInterface

因此,如果您实现了Twig_Extension_Globals接口,那么使用getGlobals方法并不是不推荐的

创建Twig_环境时,添加如下扩展:

$twig=新的twig\u环境($loader);
$twig->addExtension(新的MyTwigExtension($passYour,$data));

因此,基本上,您将创建全局函数所需的所有数据传递给扩展的构造函数。

我在上面发布的MyTwigExtension类只包含回答问题所需的部分。当然,您必须实现所需的所有方法。您得到的错误消息是什么?我必须传入getName函数,否则它会给我一个错误。如何将数组传递给它?示例:$global_array=['var1'=>'output1','var2'=>'output2',//…];使用构造函数参数。我在回答中描述了它。我真傻!它起作用了。我花了一个令人沮丧的星期才找到正确的答案!非常感谢你!