2012-03-09 14 views
7

quisiera escapar de un archivo, que estoy incluyendocrudo o escapar de incluir en ramita

siguiente código no va a escapar de las etiquetas HTML en el archivo "_custom_plugin_script.html.twig". ¿Hay otra manera?

<pre> 
    {% autoescape true %} 
     {% include "_custom_plugin_script.html.twig" | raw %} 
    {% endautoescape %} 
</pre> 

Después de un par de días, he encontrado una solución, pero no una respuesta. Entonces, la primera cruda no escaparía, por lo tanto, debería usar escape. Sin embargo, raw y escape no funcionarán dentro de {%%}, sino en {{}}.

Así que aquí viene la solución

contenido de la acción

$customPluginScript = $app['twig']->render('_custom_plugin_script.html.twig', array(
    'data' => $data, 
)); 


return $app['twig']->render('confirm.html.twig', array(
    'data' => $data, 
    'customPluginScript' => $customPluginScript 
)); 

Y la parte de confirm.html.twig

<script> 
// don't escape content of customPluginScript 
    {{ customPluginScript | raw }} 
</script> 


<!-- escape content of customPluginScript --> 
<pre> 
    {{ customPluginScript }} 
</pre> 
+2

['{{var | raw}}'] (http://twig.sensiolabs.org/doc/filters/raw.html) era lo que estaba buscando cuando encontré esta pregunta a través de Google. –

Respuesta

13
{% filter escape %} 
    {% include '...' %} 
{% endfilter %} 

Consulte la documentación de details.

+0

Eso podría ser correcto. Los documentos se actualizaron desde entonces. Me alegra que mi solución haya funcionado y ya no tengo que trabajar con Symfony2. Gracias. Tal vez alguien más puede intentarlo. Lo enviaré al equipo y podrían refactorizarlo. – vik

+0

Cuando hice la pregunta, esto no funcionaba, pero es mejor aceptar que otros busquen respuestas. – vik

+0

Esto funciona muy bien para generar HTML como entidades (por ejemplo, para copiar y pegar ejemplos de widgets). – Steve

2

ya que este es el primer resultado que aparece cuando google para twig include raw vale la pena mencionar que la rama ahora es compatible esto con la siguiente sintaxis

{{ source('AcmeSomeBundle:Default:_custom_plugin_script.html.twig') }} 

Sin embargo, esto no hace que la plantilla como se ha mencionado por Barius.

+1

'La función fuente devuelve el contenido de una plantilla sin representarla' - como entiendo, esto no representa twig. '| raw' no es para renderizar o no renderizar twig, se trata de escaparse de salida. –