2012-12-21 9 views
12

Ho il seguente codice che esegue il rendering di una stringa nell'output HTML. Come posso impedirgli di sfuggire al testo per HTML?Disabilita l'escaping HTML durante il rendering manuale di una stringa Twig

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

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

Uscite:

string(14) "Foo's bar" 

Come posso produrre in output questo, invece?

string(14) "Foo's bar" 

Capisco che cambiando '{{ who }} bar' a '{{ who|raw }} bar' risolverà il problema, ma voglio risolvere questo in fase di rendering. Non voglio cambiare tutti i modelli.

+0

Vuoi disabilitare la fuga di default a livello globale o, stai cercando di rendere solo parametri specifici senza caratteri di escape? – Gerry

+0

Non è giusto cambiare la domanda. Come sottintende Gerry, basta girarsi per fuggire globalmente nel ramoscello. Suppongo che tu non stia generando HTML. – Cerad

+1

@Cerad Non l'ho modificato, cosa che puoi dire dalla cronologia delle revisioni. – mattalxndr

risposta

15

ho scavato attraverso il codice Twig e ha scoperto che questo funziona bene:

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

Grazie! Non posso credere che questa soluzione non sia meglio documentata da qualche parte ... – Niavlys

+0

Vale la pena ricordare che 'Twig_Loader_String' è ora deprecato, e invece dovrebbe essere usato' Twig_Loader_Array'. – Jonathan

Problemi correlati