Страницы

Поиск по вопросам

четверг, 23 января 2020 г.

Twig - дочерние шаблоны

#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 %}
  • {{ link.name }}
  • {% endfor %} /*...CODE...*/ Помогите, пожалуйста. Заранее спасибо! UPD: хотя бы ссылок дайте, пожалуйста)


    Ответы

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

    Комментариев нет:

    Отправить комментарий