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';
}
}
然后注册为服务
services:
foobar.twig.FooBarMacrosGlobal
class: Bar\FooBarBundle\Twig\Globals\FooBarMacrosGlobal
tags:
- { name: twig.extension }
所以好消息是全局宏起作用了。我现在可以只调用 FooBarMacros.fooMacro() 并且一切正常。但是,现在正常的树枝功能都不起作用。
例如,我正在尝试像这样使用转储,但出现以下错误:
{{ dump('hello world') }}
The function "dump" does not exist in myTemplate.html.twig at line 219
有什么线索吗?这是我的第一个树枝扩展,所以我确定我在那里搞砸了。
我在这里先向您的帮助表示感谢,
德鲁·兰德格雷夫