Я использую Twig для создания документов LaTeX. Синтаксис разделителя синтаксиса по умолчанию Twig плохо связан с фигурными скобками LaTeX. Простое ускорение LaTeX не является вариантом, поскольку он делает код совершенно нечитаемым. Я знаю, что могу определять пользовательские разделители по всему миру , но я не хочу переписывать все мои HTML-шаблоны для использования нового синтаксиса.
Я также знаю о дословных разделах, но они делают код действительно уродливым:
\ihead{ {% endverbatim %} {{ title }} {% verbatim %} }
Есть ли способ изменить синтаксис только для текущего шаблона или набора шаблонов , например:
{% set_delimiters({ 'tag_comment' : ['<%#', '%>'], 'tag_block' : ['<%' , '%>'], 'tag_variable' : ['<%=', '%>'], 'interpolation': ['#<' , '>'] }) %}
Как вы можете видеть, не рекомендуется использовать эту функцию. Настройка синтаксиса
Кстати, вот быстрый и простой пример, чтобы объяснить, как использовать пользовательские разделители в symfony:
service.yml
services: templating_lexer: public: true parent: templating.engine.twig class: Acme\YourBundle\Twig\TwigLexerEngine
TwigLexerEngine
namespace Acme\YourBundle\Twig; use Symfony\Bundle\TwigBundle\TwigEngine; class TwigLexerEngine extends TwigEngine { public function setTwigLexer($lexer) { $this->environment->setLexer($lexer); return $this; } }
дляnamespace Acme\YourBundle\Twig; use Symfony\Bundle\TwigBundle\TwigEngine; class TwigLexerEngine extends TwigEngine { public function setTwigLexer($lexer) { $this->environment->setLexer($lexer); return $this; } }
Ваш контроллер
public function yourAction() { $lexer = new \Twig_Lexer($this->get('twig'), array( 'tag_comment' => array('{*', '*}'), 'tag_block' => array('{', '}'), 'tag_variable' => array('{$', '}'), )); $templating = $this->get('templating_lexer'); $templating->setTwigLexer($lexer); return $templating->renderResponse('YourBundle::template.html.twig'); }