Передача кода ветки в шаблон ветки и его рендеринг - PullRequest
3 голосов
/ 26 мая 2020

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

return $this->render('blank.html.twig', [
    'twig' => $this->generateTwig()
]);

blank. html .twig выглядит так:

{{ twig }}

Но когда шаблон визуализируется, внутри него просто необработанный код ветки, например:

{% extends 'base.html.twig' %} {% block content %} <h1>{{ 'app-name'|trans }}...

Как вы визуализируете внедренный код ветки в в этом примере?

Выполнение file_put_contents('blank', $this->generateTwig()) работает, но это противоречит цели использования шаблонов.

1 Ответ

5 голосов
/ 26 мая 2020

Вы можете решить это двумя способами. Либо вы предварительно визуализируете вывод $this->generateTwig() и вставляете (HTML) в шаблон blank.html.twig (непроверенный псевдо):

$template = $this->get('twig')->createTemplate($this->generateTwig());
$twig = $template->render();

return $this->render('blank.html.twig', [
    'twig' => $twig,
]);

Обратной стороной этого подхода является то, что вам нужно вызвать {{ twig|raw }} в blank.html.twig, иначе Twig выйдет из HTML. Также: кажется немного странным предварительно визуализировать шаблон веточки перед тем, как передать его в Twig (снова).

Другой подход заключается в том, что вы загружаете шаблон внутри своего blank.html.twig шаблона:

{{ include(template_from_string(twig)) }}

Функция template_from_string является частью StringLoaderExtension.

Документы здесь: https://twig.symfony.com/doc/3.x/recipes.html#loading -a-template-from-a-string


Изменить: если подумать, третий подход может быть еще проще, если blank.html.twig действительно просто файл, который выводит {{ twig }}:

$template = $this->get('twig')->createTemplate($this->generateTwig());
return $template->render();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...