2012-12-21 5 views
12

Ich habe den folgenden Code, der eine Zeichenfolge in HTML-Ausgabe rendert. Wie kann ich verhindern, dass der Text für HTML nicht mehr angezeigt wird?HTML-Escaping deaktivieren, wenn eine Twig-Zeichenfolge manuell gerendert wird

$template = '{{ who }} bar'; 
$params = array('who' => "Foo's"); 

$twig = new \Twig_Environment(new \Twig_Loader_String); 
var_dump($twig->render($template, $params)); 

Ausgänge:

string(14) "Foo's bar" 

Wie kann ich es machen Ausgabe dieser Stelle?

string(14) "Foo's bar" 

Ich verstehe, dass '{{ who }} bar' zu '{{ who|raw }} bar' Ändern wird das Problem beheben, aber ich möchte dies in der Rendering-Stufe zu lösen. Ich möchte nicht alle Vorlagen ändern.

+0

Haben Sie standardmäßig Flucht deaktivieren möchten global oder suchen Sie nur bestimmte Parameter unescaped zu machen? – Gerry

+0

Keine faire Änderung der Frage. Wie Gerry implizierte, schalten Sie einfach im Zweig aus. Ich gehe davon aus, dass Sie überhaupt kein HTML generieren. – Cerad

+1

@Cerad Ich habe es nicht bearbeitet, was Sie an der Revisionshistorie erkennen können. – mattalxndr

Antwort

15

grub ich durch den Zweig-Code und fand, dass das funktioniert gut:

$twig = new \Twig_Environment(new \Twig_Loader_String, array(
    'autoescape' => false 
)); 
+1

Danke! Ich kann nicht glauben, dass diese Lösung irgendwo nicht besser dokumentiert ist ... – Niavlys

+0

Erwähnenswert ist, dass 'Twig_Loader_String' nun veraltet ist und stattdessen 'Twig_Loader_Array' verwendet werden sollte. – Jonathan

Verwandte Themen