Теги против функций в расширениях веток - PullRequest
4 голосов
/ 16 января 2012

В настоящее время я пишу некоторые расширения в ветке, но мне трудно решить, почему определенное расширение должно быть реализовано в виде тега или функции.

Документация Twig перечисляет следующие 2конструкции и что они делают:

  • {{ }}: используется для печати результата вычисления выражения;
  • {% %}: используется для выполнения операторов.

Я планирую внедрить что-то похожее на встроенные контроллеры symfony2 .

Почему эта функция реализована следующим образом:

{% render "AcmeDemoBundle:Demo:fancy" with { 'name': name, 'color': 'green' } %}

Поскольку встроенные контроллерыфункция должна возвращать полностью визуализированный шаблон для запрошенного контроллера, не будет ли функция более подходящей?

render("AcmeDemoBundle:Demo:fancy", { 'name': name, 'color': 'green' });

1 Ответ

2 голосов
/ 10 февраля 2012

Меня интересовал тот же вопрос.Вам решать.

Если вы используете {{ }}, вы сможете применить фильтры к выходным данным: {{ render()|upper }}.Если вы используете {% %}, выход вашего расширения не будет "очищен" (но вы всегда можете использовать {{ }} с array('is_safe' => array('all')).

render - важная конструкция.Это не просто функция типа {{ path() }}, которую вы можете вызвать в выражении: {{ host ~ path() }}.

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