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