2011-08-19 15 views
6

He logrado construir una página que muestre los datos de la base de datos dinámicamente. Sin embargo, este código que se guarda en la base de datos:Cómo mostrar etiquetas HTML guardadas en la base de datos utilizando Symfony 2 y Twig

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

Muestra como esta:

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

Las etiquetas HTML no se rindió. Entiendo que Symfony (por razones de seguridad) representa cualquier código HTML como este por razones de seguridad. Quiero que Symfony (obviamente) represente estas etiquetas HTML. ¿Cómo puedo lograr esto solo para este propósito, para que Symfony aún desinfecte cualquier etiqueta HTML que se guarde en la base de datos en otro lugar del sitio?

Para su información, así, este es el código que estoy utilizando para extraer los datos de la base de datos:

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)); 
} 

Además, sólo para que pueda aprender más sobre Symfony, es la prestación del HTML etiquetas solo el trabajo exclusivo de PHP o podría ser renderizado apropiadamente usando Twig?

¡Muchas gracias!

Respuesta

22

Si desea hacer eso, debe usar el filtro raw en la plantilla de ramita. Como se describe en la documentación de ramitas, el filtro sin procesar marca el valor como seguro, lo que significa que en un entorno con escapado automático habilitado, esta variable no se escapará si el último filtro aplicado es raw.

En su caso, es: {{ content | raw }}

+0

Gracias mucho! Funciona de maravilla :) – mickburkejnr

+0

no funciona cuando he dado un

+0

¿Estás seguro de que no está funcionando? En realidad, utilizo el filtro '' raw'' para mostrar HTML puro y el indicador se representa correctamente. – egeloen

Cuestiones relacionadas