Как я могу определить глобальные переменные внутри файла шаблона ветки?

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

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

Я знаю, что установка глобальных переменных возможна из фреймворка (например, Symfony), но мне нужно решение, использующее только функции веток.

9

Решение

Если вы используете Symfony2, вы можете установить глобальные переменные в своем config.yml файл:

# app/config/config.yml
twig:
# ...
globals:
myStuff: %someParam%

А потом использовать {{ myStuff }} в любом месте вашего приложения.


Если вы используете Twig в другом проекте, вы можете установить глобальные переменные непосредственно в среде:

$twig = new Twig_Environment($loader);
$twig->addGlobal('myStuff', $someVariable);

А потом использовать {{ myStuff }} в любом месте вашего приложения.


Если у вас много глобальных переменных и вы хотите указать набор глобальных переменных только для определенной части вашего приложения, вы можете создать расширение Twig:

class Some_Twig_Extension extends Twig_Extension implements Twig_Extension_GlobalsInterface
{
public function getGlobals()
{
return array(
'someStuff' => $this->myVar,
// ...
);
}

// ...
}

Затем импортируйте его в свою среду только при необходимости:

$twig = new Twig_Environment($loader);
$twig->addExtension(new Project_Twig_Extension());

И еще пользуюсь {{ myStuff }} в любом месте вашего приложения.

Когда вы включаете фрагмент кода Twig, вы включаете только визуализированное представление, полученное из этого кода, а не сам код. Таким образом, по своей сути невозможно включить набор переменных так, как вы ищете.

20

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]