#php #twig #шаблонизаторы
Здравствуйте.
Недавно начал изучать Twig, и совсем не понимаю как работать с дочерними шаблонами
(лайаутами).
Как мне отправлять данные в дочерний лайаут, чтобы после вывода основного лайаута,
дочерние отображались с переданными данными. Или тут надо все лайауты с данными строить
по кусочкам а потом собирать?
Ну вот как тут, к примеру, передать массив menu лайауту menu.twig:
index.php/*...CODE...*/
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem($twig_filesystem);
$twig = new Twig_Environment($loader, array(
'cache' => TWIG_CACHE,
'debug' => TWIG_DEBUG));
$twig->display('main.twig', array());
/*...CODE...*/
main.twig /*...CODE...*/
{% include "header.twig" %}
/*...CODE...*/
header.twig /*...CODE...*/
{% include "menu.twig" %}
/*...CODE...*/
menu.twig /*...CODE...*/
{% for link in menu %}
Ответы
Ответ 1
Как то сложно вы страницу строите. Посмотрите раздел Extends http://twig.sensiolabs.org/doc/tags/extends.html Проще создать один главный (или пару) шаблон, наследоваться от него и создавать похожие шаблоны переопределяя блоки. А про переменные в include смотрите http://x-twig.ru/tags/include/ они передаются {% include 'template.html' with {'foo': 'bar'} %} Т.е. передаете в основной шаблон переменные, в основном шаблоне указываете какие переменные передать дочернему при includeОтвет 2
Очень полезно бывает читать документацию. Вот краткая выдержка из неё: {% include 'template.html' with {'foo': 'bar'} %} {% set vars = {'foo': 'bar'} %} {% include 'template.html' with vars %} Соответственно переменные можно создавать не только в шаблоне, но и передавать из скрипта.
Комментариев нет:
Отправить комментарий