Как передать переменную php в шаблон веточки

Я нашел довольно много дискуссий по этому вопросу, но я не могу заставить его работать. Я определяю переменную в php таким образом

$theme_name = 'layout1';

Поэтому я попробовал следующее, чтобы «layout1» отображалось в моем шаблоне CMS с использованием {{theme.name}} по одному из следующих элементов, по одному, но ни один из них не работал. Те с $ twig дали неопределенную переменную ‘twig’.

$theme['name'] = $theme_name;
$app["twig"]->addGlobal("name", $theme_name);
$GLOBALS['theme'] = 'layout1';
$twig->addGlobal('themename', 'layout1');

Так куда я иду не так?

2

Решение

Вы также можете добавить весь массив в Twig:

$theme_name = 'layout1';
$somevar = 'blah';

$theme = array(
'name' => $theme_name,
'something' => $somevar
);

$twig = new Twig_Environment($loader);
$app["twig"]->addGlobal("theme", $theme);

Затем в своем шаблоне вы можете вывести именованные элементы этого массива:

{{ theme.name }}
{{ theme.something }}

НТН

1

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

Документация Twig покрывает это.

https://twig.symfony.com/doc/2.x/advanced.html

https://twig.symfony.com/doc/2.x/advanced.html#globals

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

 $twig = new Twig_Environment($loader);
$twig->addGlobal('text', new Text());

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

 {{ text.lipsum(40) }}
1

Просто как тот:

$twig->addGlobal('themename', $variation);

и в вашем файле шаблона вы просто позвоните

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