Создание шаблона Dynami c Twig внутри контроллера PHP с Symfony - PullRequest
0 голосов
/ 07 февраля 2020

Чтобы объяснить мои потребности:

  • Я хочу, чтобы мои пользователи сами создали "шаблон веточки" с Google Docs
  • Например, если внутри GDocs моего пользователя есть { % if user.id is defind%} {{user.name}} {% endif%}
  • Я хочу, чтобы в моем контроллере была получена эта строка ("{%, если user.id равен defind%} {{user.name}} {% endif%} ")
  • Затем проверьте, можно ли интерпретировать эту конкретную строку ветки
  • Если да, получите реальное значение этой строки ветки (скажем, "Джон")
  • А затем в GDocs моего пользователя заменить "{% if user.id is defind%} {{user.name}} {% endif%}" на "Джон"

Мне абсолютно необходимо получить окончательное значение ("Джон"), потому что GDocs просто дает метод для поиска и замены строки (поиск "{%, если user.id имеет значение%} {{ user.name}} {% endif%} ", замените на« Джон »).

Итак ...

Для каждой строки ветки, которую я нахожу в их GDocs, мне нужно проверить если я могу найти значение для этой ветки.

Есть ли способ т o «создать» веточку в моем контроллере, заменить ее значение чем-то вроде этого?

$myTwig = new TwigTemplate("{% if user.id is defind %}{{ user.name }}{% endif %}");
$myUserName = $this->render($myTwig, array("user" => $user")

Заранее спасибо!

1 Ответ

0 голосов
/ 07 февраля 2020

Вы можете использовать template_from_string() в веточке для eval строку в качестве кода веточки:

$myTwig = "{% if user.id is defind %}{{ user.name }}{% endif %}";
// $template can be the base template in which you inject the code
$myUserName = $this->render($template, array('myTwig' => $myTwig, "user" => $user");

В виде:

{{ include(template_from_string(myTwig)) }}

Больше информации в документация

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