2012-12-21 10 views
12

Mam następujący kod, który renderuje ciąg znaków do wyjścia HTML. Jak mogę go powstrzymać przed ucieczką z tekstu do HTML?Wyłącza wymazywanie kodu HTML podczas ręcznego renderowania ciągu Twig

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

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

Wyjścia:

string(14) "Foo's bar" 

Jak mogę sprawić, że wyjście to zamiast?

string(14) "Foo's bar" 

Rozumiem, że zmiana '{{ who }} bar' do '{{ who|raw }} bar' będzie rozwiązać ten problem, ale chcę, aby rozwiązać ten problem na etapie renderowania. Nie chcę zmieniać wszystkich szablonów.

+0

Czy chcesz wyłączyć ucieczce domyślnie globalnie lub szukasz do renderowania tylko konkretne parametry Niecytowany? – Gerry

+0

Bez uczciwej zmiany pytania. Jak sugerował Gerry, po prostu skręć uciekając globalnie w gałązce. Zakładam, że w ogóle nie generujesz html. – Cerad

+1

@Cerad Nie edytowałem tego, co można stwierdzić po historii zmian. – mattalxndr

Odpowiedz

15

kopany przez kod Twig i okazało się, że to działa prawidłowo:

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

Dzięki! Nie mogę uwierzyć, że to rozwiązanie nie jest gdzieś lepiej udokumentowane ... – Niavlys

+0

Warto wspomnieć, że 'Twig_Loader_String' jest teraz przestarzałe i zamiast niego należy użyć' Twig_Loader_Array'. – Jonathan

Powiązane problemy