7 Stimmen

Verwenden Sie benutzerdefinierte Trennzeichen im aktuellen Twig-Template.

Ich benutze Twig, um LaTeX-Dokumente zu erstellen. Twigs Standard-Delimiter-Syntax kollidiert stark mit den geschweiften Klammern von LaTeX. Einfaches Escapen von LaTeX ist keine Option, da es den Code völlig unleserlich macht. Ich weiß, dass ich globale benutzerdefinierte Delimiter definieren kann, aber ich möchte nicht alle meine HTML-Vorlagen neu schreiben, um die neue Syntax zu verwenden.

Ich kenne auch Verbatim-Abschnitte, aber die machen den Code wirklich hässlich:

\ihead{
{% endverbatim %}
{{ title }}
{% verbatim %}
} 

Gibt es einen Weg, wie ich die Syntax nur für die aktuelle Vorlage oder eine Gruppe von Vorlagen ändern kann, etwas wie:

{% set_delimiters({
    'tag_comment'  : ['<%#', '%>'],
    'tag_block'    : ['<%' , '%>'],
    'tag_variable' : ['<%=', '%>'],
    'interpolation': ['#<' , '>']
}) %}

4voto

a.aitboudad Punkte 3998

Wie Sie sehen können, wird empfohlen, diese Funktion nicht zu verwenden Anpassen der Syntax

Übrigens, hier ist ein schnelles und einfaches Beispiel, um zu erklären, wie benutzerdefinierte Trennzeichen in Symfony verwendet werden:

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;
    }
}

Ihr Controller

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');
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X