Как мне получить переменную Twig, которую я установил, из моего расширения twig?

Итак ... Я некоторое время пытался получить переменные веточки в моем расширении.

Сначала попробовал получить от $environment->getGlobals() .. Но это были просто глобалы. Затем я попытался сослаться на разные части внутри getCompiler(), без сока, многие вещи, которые я пробовал, вместо этого просто заблокировали мой браузер или экземпляр php.

Так что я пытаюсь сделать?

В моем шаблоне веточки я делаю это

{% set myvariable = "something" %}

В моем расширении веточки, когда я вызываю определенную функцию, я хочу видеть, была ли эта переменная что-то установлена, если было установлено что-то, что я хочу выполнить определенное действие.


person Ceagle    schedule 04.08.2012    source источник
comment
Почему бы вам просто не вызвать функцию расширения с этой переменной (или без нее, если она не установлена)?   -  person apfelbox    schedule 07.08.2012
comment
Как говорит @apfelbox, почему вы не можете просто передать переменную в функцию?   -  person gunnx    schedule 08.08.2012
comment
Я могу, да .. Но эта переменная не всегда устанавливается .. Так что я хотел бы предоставить некоторую логику на стороне ветки, чтобы понять это.   -  person Ceagle    schedule 11.08.2012


Ответы (3)


Если вы можете получить доступ к контексту, из которого вызывается ваше расширение, вы сможете понять это.

person Henrik Bjørnskov    schedule 10.08.2012
comment
Контекст дает вам только те переменные, которые установлены с контроллера, он не дает вам переменные, установленные внутри шаблона веточки. - person Ceagle; 11.08.2012
comment
Следует, как бы переменные, назначенные в шаблоне, передавались в тег include. - person Henrik Bjørnskov; 15.08.2012
comment
Они находятся внутри узлов ветки, и это загадочно, как получить к ним доступ. Поверьте мне, вы не можете понять это в контексте. - person Ceagle; 20.08.2012

Вы смотрели глобальные переменные Twig для шаблонов? Я искал нечто подобное (механизм для установки всех переменных в контексте шаблона) и наткнулся на глобальную переменную _context, которая содержала все, что мне было нужно.

person Sean Quinn    schedule 19.09.2013

Вы можете передать переменные twig в расширение twig, передав глобальную переменную _context вашей функции. _context - это массив, содержащий все переменные из вашего шаблона.

{{ my_twig_function(_context) }}
person Linkmichiel    schedule 19.05.2015