2010-02-01 3 views
7

J'essaie de générer du code HTML dans un modèle XML et la méthode d'échappement de Symfony le gâche. J'ai donc essayé de faire une copie de settings.yml dans le dossier config du module, mais il semble être complètement ignoré. Existe-t-il un moyen facile de modifier les paramètres escaping_strategy et/ou escaping_method par module ou même par modèle?Symfony - Est-il possible de désactiver la sortie d'échappement par module (ou par template)?

Répondre

17

Lorsque la sortie est activée, vous avez toujours accès à la valeur brute via $sf_data. Par exemple, si le code HTML que vous essayez de sortie a été stockée dans une variable appelée HTML dans votre action:

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

Vous pouvez obtenir la valeur avec cette séquence d'échappement:

<?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

Je ne crois pas qu'il existe un moyen de désactiver cette fonctionnalité par module. GetRaw ne fonctionne que si la variable est passée à partir de l'action

+5

Il semble cool, ne savait pas à ce sujet. Je n'ai pas compris la question comme ça et j'étais sur le point de répondre, juste pour un objet: $ votreObjet-> getRawValue() -> getProperty() .. si ça aide ... – Julien

+0

Julien: s'il essaie de travailler sur un objet modèle votre solution serait parfaite, vous devriez poster comme une réponse au cas où. – nortron

+0

Merci Cryo, $ sf_data-> getRaw() a fait l'affaire. Julien, merci pour l'info sur comment l'utiliser du modèle. –

10

la variable à la vue d'utiliser

sfOutputEscaperGetterDecorator::unescape($html) 
+0

Un grand merci pour cette astuce! –

+0

Je cherchais à désapparaître certains attributs, mais malheureusement, les attributs ne sont pas accessibles via $ sf_data-> getRaw (..). Mais ta réponse a fait l'affaire! Merci! –

9

Il suffit de lancer dans ce problème aujourd'hui et je parviens à le résoudre en mettant sfConfig::set('sf_escaping_strategy', false) dans mon contrôleur (dans preExecute méthode pour toutes les actions de ce module ou dans une action spécifique - executeWhatever) .

+0

Utile lorsque vous travaillez sur des systèmes hérités. –

Questions connexes