2017-01-04 3 views
1

In TWIG Template-Engine, was der beste Weg wäre, den Inhalt wie folgt zu analysieren:TWIG: Wie benutzerdefinierte Tags analysiert werden?

[name="tom"] 
    Lorem ipsum dolor <strong>sit amet</strong>, 
    consectetur adipiscing elit, 
    sed do eiusmod tempor incididunt 
[/name] 

in so etwas wie:

<blockquote> 
    Lorem ipsum dolor <strong>sit amet</strong>, 
    consectetur adipiscing elit, 
    sed do eiusmod tempor incididunt 
</blockquote> 

Und auch holt den Wert von Namen Attribut. In dem oben angegebenen Beispiel ist der Wert des Attributs Nametom. Vorschläge?

+1

Vielleicht mit einem Filter? http://twig.sensiolabs.org/doc/advanced.html – davidbonachera

+2

Sie müssen Ihren eigenen [Knoten] (http://twig.sensiolabs.org/doc/advanced.html#defining-a-node) hinzufügen mach das – DarkBee

Antwort

1

Ich endete mit der Twig_SimpleFunction() Methode, um eine benutzerdefinierte TWIG-Funktion (Erweiterung) zu erstellen.

/** 
* @var $html STRING FROM THE POST 
* @return $string RETURN AS STRING 
*/ 
public function toBlockQuotedFormat($html) { 

    $re = '/(.*?)\[name=(.*?)\]/'; 
    preg_match_all($re, $html, $matches); 

    if(isset($matches[2][0])) { 

     $name = $matches[2][0]; 
     // CONVERT THE NAME-TAG TO BLOCKQUOTE 
     $html = str_replace("[name=".$name."]", "<blockquote>", $html); 
     $html = str_replace("[/name]", "</blockquote>", $html); 
    } 

    return $html; 
} 

Dann war ich {{ toBlockQuotedFormat(theHtmlVar|nl2br)|raw }} verwenden, können sie auf die gewünschte <blockquote></blockquote> Tag zu analysieren. Ich habe auch den $name Wert; Allerdings habe ich bei dieser Gelegenheit nicht anders als für str_replace Funktion verwendet.

Verwandte Themen