Я пытаюсь вывести некоторый HTML в шаблоне XML, и метод экранирования Symfony все портит. Поэтому я попытался сделать копию settings.yml в папке конфигурации модуля, но, похоже, он полностью проигнорирован. Есть ли простой способ изменить настройки escaping_strategy и/или escaping_method для каждого модуля или даже для каждого шаблона?
Вопрос
Symfony - можно ли отключить экранирование вывода для каждого модуля (или для каждого шаблона)?
Ответы
Ответ 1 · рейтинг 17 · nortron
Пока экранирование вывода включено, вы по-прежнему имеете доступ к необработанному значению через $sf_data. Например, если HTML, который вы пытаетесь вывести, был сохранен в переменной с именем html в вашем действии:
$this->html = '<b>My HTML</b>';
Вы можете получить неэкранированное значение следующим образом:
<?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
Я не верю, что есть способ отключить эту функцию для каждого модуля.
Ответ 2 · рейтинг 11 · Hesky
getRaw работает, только если переменная передается из действия. для использования переменной в представлении
sfOutputEscaperGetterDecorator::unescape($html)
Ответ 3 · рейтинг 9 · Vlad Jula-Nedelcu
Просто столкнулся с этой проблемой сегодня, и мне удалось решить ее, установив sfConfig::set('sf_escaping_strategy', false) в моем контроллере (либо в методе preExecute для всех действий в этом модуле, либо в конкретном действии - executeWhatever).
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.