2011-08-19 12 views
6

Udało mi się zbudować stronę, która będzie dynamicznie wyświetlać dane z bazy danych. Jednak ten kod, który jest zapisany w bazie danych:Jak wyświetlić znaczniki HTML zapisane w bazie danych za pomocą Symfony 2 i Twig

<p>This is the content for the radio <a href="#">page</a>.</p> 

Wyświetla tak:

<p>This is the content for the radio <a href="#">page</a>.</p> 

Znaczniki HTML nie są renderowane. Rozumiem, że Symfony (dla celów bezpieczeństwa) renderuje dowolny kod HTML w ten sposób ze względów bezpieczeństwa. Chcę, żeby Symfony (oczywiście) renderował te znaczniki HTML. Jak mogę to osiągnąć tylko w tym celu, aby Symfony nadal odświeżył jakikolwiek znacznik HTML zapisany w bazie danych w innym miejscu witryny?

Dla Twojej informacji, jak również jest to kod, który używam do ściągania danych z bazy danych:

public function mainpageAction($slug) 
{ 

    $content = $this->getDoctrine() 
     ->getRepository('SiteMainBundle:Content') 
     ->find($slug); 

    if (!$content) { 
     throw $this->createNotFoundException('No product found for slug '.$slug); 
    } 

    return $this->render('SiteMainBundle:Default:page.html.twig', array('content' => $content, 'slug' => $slug)); 
} 

też tak mogę dowiedzieć się więcej o Symfony, jest renderowania HTML oznacza tylko jedno zadanie PHP lub czy można je poprawnie renderować za pomocą Twig?

Wielkie dzięki!

Odpowiedz

22

Jeśli chcesz to zrobić, musisz użyć filtru raw w szablonie gałązki. Jak opisano w dokumentacji twig, filtr surowy wyznacza wartość jako bezpieczną, co oznacza, że ​​w środowisku z włączonym automatycznym escaping ta zmienna nie zostanie zmieniona, jeśli raw jest ostatnim filtrem zastosowanym do niej.

W twoim przypadku jest to: {{ content | raw }}

+0

Dziękuję bardzo! Działa wspaniale :) – mickburkejnr

+0

to nie działa, gdy otrzymałem

+0

Jesteś pewien, że to nie działa? Właściwie używam filtra '' raw'' do wyświetlania czystego HTML, a flaga jest poprawnie renderowana. – egeloen

Powiązane problemy