TL; DR: Я сделал заказ прут расширение и теперь веточки базовые функции не работаютTwig Базовые функции не работают после собственного расширения сделал
Так немного предысторию. У меня есть этот файл twig (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
Любой ключ, что происходит? Это мое первое расширение ветки, поэтому я уверен, что я что-то там прикрутил.
Спасибо за помощь заранее,
Дрю Ландграф