Php 创建自定义扩展后,细枝基函数不起作用

Php 创建自定义扩展后,细枝基函数不起作用,php,symfony,twig,Php,Symfony,Twig,TL;DR:我做了一个自定义的细枝扩展,现在细枝基函数不起作用了 所以有点背景故事。我有一个细枝文件(masterMacro.html.twig),其中包含对我所有细枝宏的引用。我试图创建一个twig全局变量,它允许我不必在每个页面上导入masterMacro.html.twig,而只需调用全局变量 举例说明。而不是必须这样做 {% import 'FooBarbundle:Macros:masterMacros.html.twig' as macros %} {{ macros.fooMacr

TL;DR:我做了一个自定义的细枝扩展,现在细枝基函数不起作用了

所以有点背景故事。我有一个细枝文件(masterMacro.html.twig),其中包含对我所有细枝宏的引用。我试图创建一个twig全局变量,它允许我不必在每个页面上导入masterMacro.html.twig,而只需调用全局变量

举例说明。而不是必须这样做

{% import 'FooBarbundle:Macros:masterMacros.html.twig' as macros %}
{{ macros.fooMacro() }}
我试图做到这一点,这样我只需要做:

{{ FooBarMacros.fooMacro() }}
因此,我编写了一个自定义扩展,如下所示:

/** FooBarBundle\Twig\Globals\FooBarBundleMacrosGlobal.php */
<?php

namespace Bar\FooBarBundle\Twig\Globals;


class FooBarBundleMacrosGlobal extends \Twig_Extension{

    /**
         * Returns a list of global variables to add to the existing list.
         *
         * @return array An array of global variables
         */
        public function getGlobals()
        {

            $loader = new \Twig_Loader_Filesystem(array('/web/bar/Bar/FooBarBundle/Resources/views/Macros'));

            $twig = new \Twig_Environment($loader);

            return array(
              'FooBarMacros' => $twig->loadTemplate('masterMacro.html.twig')
            );
        }

        public function getName(){
            return 'FooBarMacros';
        }

} 
因此,好消息是全球宏观经济起了作用。现在,我可以只调用FooBarMacros.fooMacro(),一切正常。但是,现在没有一个正常的细枝函数可以工作

例如,我试图像这样使用dump,但出现以下错误:

{{ dump('hello world') }}
The function "dump" does not exist in myTemplate.html.twig at line 219 
有什么线索吗?这是我的第一根树枝,所以我肯定我搞砸了

提前谢谢你的帮助

德鲁·兰德格雷夫

我的假设:

您可以创建\Twig\u环境的新实例。Symfony之后可能会以任何方式使用它,而且它显然没有任何扩展定义的函数

查看手册,有一种方法“[…]您可以加载一些包含过滤函数的文件,例如”。作为参数,可以使用全局\Twig\u环境实例

因此,我将尝试将$twig->loadTemplate()放入initRuntime(),将返回的对象保存到一个对象变量中,并在getGlobals()中返回它

{{ dump('hello world') }}
The function "dump" does not exist in myTemplate.html.twig at line 219