Symfony 2.0 i escapowanie w rozszerzeniach Twig

Problem

Potrzebna jest nowa funkcja  Twig, która będzie wyświetlać wyciągniętą z bazy danych treść. Ot prosta zabawka, która wyświetli zawartość danego boxu, który jest kodem HTML. Do klasy dziedziczącej po klasie Twig_Extension znajdującej się w katalogu /vendor/bundles/<sciezka_do_bundle>/Twig/Extension dodaję:

public function getFunctions() {
        return array(
            'content' => new \Twig_Function_Method($this, 'getContent')
        );
    }

W template’cie wywołuję nowo dodaną funkcję:

{{ content() }}

Jednak to nie działa poprawnie, ponieważ wyświetla ona kod html (zadziałało escape’owanie):

<p>Treść testowa</p>

Modyfikuję zatem metodę getFunctions() dodając:

array('is_safe' => array('html'))

jako drugi argument konstruktora Twig_Function_Method. Obecnie metoda getFunctions() ma postać:

public function getFunctions() {
        return array(
            'content' => new \Twig_Function_Method($this, 'getContent', array('is_safe' => array('html')))
        );
    }

Nie działa. Oczywiście serwis działa w środowisku „dev” (http://adres.serwisu/app_dev.php).

Przyczyna

Cache.

Rozwiązanie

php app/console cache:clear

Zostaw odpowiedź

Używamy Gravatara w komentarzach - zdobądź swój własny!

XHTML: Możesz użyć następujące tagi: <a href=""> <b> <blockquote> <code> <em> <i> <strike> <strong>