Визуализировать макрос Twig из PHP?

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

Единственный способ сделать это — сгенерировать исходный код Twig, который выглядит следующим образом:

{% import 'macros.twig' as m %}
{{ m.widget(...) }}

А потом сделать что-то сумасшедшее, как

eval('?>'.$twig->compileSource($twig->getLoader()->getSource($name), $name));

Который кажется медленным, опасным и ломким. Есть ли лучший способ подключиться к Twig API?

1

Решение

Да, для рендеринга шаблона вы должны использовать:

echo $twig->loadTemplate($name)->render($context);

loadTemplate скомпилирует источник ветки, если он не существует в кеше.

render Метод сделает ваш шаблон безопасно.

Макрос — это в основном метод скомпилированного класса (см. Ссылку на скомпилированный шаблон этой скрипты: http://twigfiddle.com/orfp3d) вы можете вызывать макрос извне довольно легко, но это не рекомендуется (так как ваш макрос не будет принимать участие в TemplateInterface)

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector