#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 %} Соответственно переменные можно создавать не только в шаблоне, но и передавать из скрипта.
Комментариев нет:
Отправить комментарий