2017-02-14 4 views
2

Я хотел бы ввести глобальные переменные, которые будут использоваться в файлах twig.Ввод глобальных переменных ветви в пользовательских twig_variable.yml

Я знаю, что могу добавить их к config.yml

twig: 
    variable_1: variable 1 
    variable_2: variable 2 

но с текущей настройки я не могу обновить config.yml.

Я ввел файл yml через load() внутри класса расширения внутри DependencyInjection, но это насколько я понял, потому что я не знаю, как его затем ввести для использования Twig.

+0

привета @ user742736 вы нашли решение? Что вы думаете о подходе, описанном в моем ответе? – Matteo

ответ

5

Вы можете попробовать повторить логику TwigExtensionLoader, как определено here в compilerPass, как пример:

public function process(ContainerBuilder $container) 
{ 
    $def = $container->getDefinition('twig'); 
    $def->addMethodCall('addGlobal', array('my-key', 'my-value')); 
} 

более подробный пример:

Предположим, что у нас есть нагруженные свойства следующим образом:

twig_params.yml

parameters: 
    foo: bar 

Уже нагружено мы можем внедрение зависимости добавить compiler pass, как пример:

CustomPass

use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; 
use Symfony\Component\DependencyInjection\ContainerBuilder; 

class CustomPass implements CompilerPassInterface 
{ 
    public function process(ContainerBuilder $container) 
    { 
     $foo = $container->getParameter('foo'); 

     $def = $container->getDefinition('twig'); 
     $def->addMethodCall('addGlobal', array('foo', $foo)); 
    } 
} 

See the docs here about как зарегистрировать его.

Затем вы можете использовать в шаблоне веточки как обычные глобальные переменные:

{{ foo }} 

Надеется, что это поможет

Смежные вопросы