Twig рендерит другой контроллер из базового вида - PullRequest
0 голосов
/ 26 октября 2018

Я использую веточку отдельно, а не из Symfony.

У меня есть базовый макет base.html. Другие макеты расширяют это, и это, кажется, работает нормально.

Если у меня есть controlleraction BlogPosts, который передает массив блогов, я отображаю макет блога, который расширяется от базового макета, чтобы увидеть это содержимое. Это работает как задумано

Теперь я хотел бы передать переменные в базовый шаблон, чтобы он был виден на каждой странице. Как я могу это сделать?

Я нашел эту статью , но это упоминает ее для Symfony. Сам по себе веточка не имеет функции рендера.

1 Ответ

0 голосов
/ 26 октября 2018

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

project
  - templates
     - base.html.twig
     - index.html.twig
  - vendor
  - index.php

Итак, ваш код index.php должен выглядеть следующим образом:

require_once 'vendor/autoload.php';
$loader = new Twig_Loader_Filesystem('templates', getcwd());
$twig = new Twig_Environment($loader);

echo $twig->render('index.html.twig', array('name' => 'Hello'));

Итак, если вы хотите передать некоторую переменную в базовый шаблон, у twig есть метод для добавления значения для использования глобально

require_once 'vendor/autoload.php';
$loader = new Twig_Loader_Filesystem('templates', getcwd());
$twig = new Twig_Environment($loader);
$twig->addGlobal('title', 'HomePage');

echo $twig->render('index.html.twig', array('name' => 'Hello'));

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...