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>