2010-02-01 7 views
7

Estoy tratando de generar algo de HTML en una plantilla XML y el método de escape de Symfony lo está arruinando. Así que intenté hacer una copia de settings.yml en la carpeta de configuración del módulo, pero parece ser ignorada por completo. ¿Existe alguna manera fácil de cambiar las configuraciones escaping_strategy y/o escaping_method por módulo o incluso por plantilla?Symfony: ¿es posible desactivar el escape de salida por módulo (o por plantilla)?

Respuesta

17

Mientras que el escape de salida está activado, todavía tiene acceso al valor sin formato a través de $sf_data. Por ejemplo, si el código HTML que está tratando de salida se almacena en una variable llamada html en su acción:

$this->html = '<b>My HTML</b>'; 

usted podría conseguir el valor sin escapar con esto:

<?php echo $sf_data->getRaw('html') ?> 

http://www.symfony-project.org/book/1_0/07-Inside-the-View-Layer#chapter_07_sub_activating_output_escaping

No creo que haya una forma de deshabilitar esta funcionalidad por módulo.

+5

Parece genial, no sabía nada de esto. No entendí la pregunta como esta y estaba a punto de responder, solo por un objeto: $ yourObject-> getRawValue() -> getProperty() ... si ayuda ... – Julien

+0

Julien: si está tratando de trabajar de un objeto modelo, su solución sería perfecta; debería publicarla como respuesta, por las dudas. – nortron

+0

Gracias Cryo, $ sf_data-> getRaw() hizo el truco. Julien, gracias por la información sobre cómo usar esto del modelo. –

10

getRaw solo funciona si la variable se pasa de la acción. para la variable a la vista utilice

sfOutputEscaperGetterDecorator::unescape($html) 
+0

¡Muchas gracias por este consejo! –

+0

Estaba buscando unescape de algún atributo, pero lamentablemente, los atributos no son accesibles a través de $ sf_data-> getRaw (..). ¡Pero tu respuesta hizo el truco! ¡Gracias! –

9

Sólo tiene que ejecutar en este problema hoy y me las arreglo para resolver estableciendo sfConfig::set('sf_escaping_strategy', false) en mi controlador (ya sea en preExecute método para todas las acciones en ese módulo o en una acción específica - executeWhatever) .

+0

Útil cuando se trabaja en sistemas heredados. –

Cuestiones relacionadas