Я нашел довольно много дискуссий по этому вопросу, но я не могу заставить его работать. Я определяю переменную в 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');
Так куда я иду не так?
Вы также можете добавить весь массив в 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 }}
НТН
Документация Twig покрывает это.
Глобальная переменная похожа на любую другую переменную шаблона, за исключением того, что она доступна во всех шаблонах и макросах:
$twig = new Twig_Environment($loader);
$twig->addGlobal('text', new Text());
Затем вы можете использовать текстовую переменную в любом месте шаблона: 1
{{ text.lipsum(40) }}
Просто как тот:
$twig->addGlobal('themename', $variation);
и в вашем файле шаблона вы просто позвоните
{{themename}}