Twig: заменить произвольный токен в переменной на шаблон include - PullRequest
0 голосов
/ 15 марта 2012

Я ищу заменить токены в переменных, передаваемых в мой шаблон из контроллера, включением для другого шаблона; что-то концептуально вроде:

// controller
$post->content = "<p>Here's a short post that an enduser wrote. The enduser wants
    product info to appear here: %product_info_here%. Over and out.</p>";

// Twig template
<div class="content">
  {{ post.content
     | replace({ '%product_info_here%': include('product_info.html.twig') }) }}
</div>

С самого начала, чтобы посмотреть на код Twig, похоже, что фильтры не имеют доступа к своему контексту, и поэтому не смогут выполнить это. Эта функциональность уже существует, и если нет, то где будет правильное место в архитектуре ветки для ее добавления?

UPDATE:

Это сделано для того, чтобы конечный пользователь мог определить, куда приложение должно внедрить частичное. Я поместил пример в контроллер для краткости; на самом деле буквальный токен будет частью записи Post в базе данных, введенной конечным пользователем, а содержимое сообщения будет передано в шаблон Twig. Мне бы хотелось, чтобы шаблон Twig анализировал содержимое сообщения для токена и вставлял частичное.

1 Ответ

0 голосов
/ 15 марта 2012

Не могли бы вы объяснить немного больше, почему вы хотите разместить шаблоны в вашем контроллере?Я думаю, что следующее будет работать так же хорошо:

// Twig template
<div class="content">
  <p>Here's a short post. Product info: {% include('product_info.html.twig') %}</p>
</div>
...