Я пытаюсь вывести некоторый HTML в шаблоне XML, и метод экранирования Symfony все портит. Поэтому я попытался сделать копию settings.yml в папке конфигурации модуля, но, похоже, он полностью проигнорирован. Есть ли простой способ изменить настройки escaping_strategy и/или escaping_method для каждого модуля или даже для каждого шаблона?
Symfony — можно ли отключить экранирование вывода для каждого модуля (или для каждого шаблона)?
Ответы (3)
Пока экранирование вывода включено, вы по-прежнему имеете доступ к необработанному значению через $sf_data. Например, если HTML, который вы пытаетесь вывести, был сохранен в переменной с именем html в вашем действии:
$this->html = '<b>My HTML</b>';
Вы можете получить неэкранированное значение следующим образом:
<?php echo $sf_data->getRaw('html') ?>
Я не верю, что есть способ отключить эту функцию для каждого модуля.
person
nortron
schedule
01.02.2010
Выглядит круто, не знал об этом. Я не понял такого вопроса и собирался ответить только для объекта: $yourObject->getRawValue()->getProperty() .. если это поможет...
- person Julien; 02.02.2010
Жюльен: если он пытается работать с модельным объектом, ваше решение было бы идеальным, вы должны опубликовать ответ на всякий случай.
- person nortron; 02.02.2010
Спасибо Cryo, $sf_data-›getRaw() справилась с задачей. Julien, спасибо за информацию о том, как использовать эту модель.
- person Steven Mercatante; 02.02.2010
getRaw работает, только если переменная передается из действия. для использования переменной в представлении
sfOutputEscaperGetterDecorator::unescape($html)
person
Hesky
schedule
27.06.2011
Я хотел отключить некоторые атрибуты, но, к сожалению, атрибуты недоступны через $sf_data->getRaw(..). Но твой ответ помог! Спасибо!
- person Jonathan Pasquier; 01.04.2016
Просто столкнулся с этой проблемой сегодня, и мне удалось решить ее, установив sfConfig::set('sf_escaping_strategy', false) в моем контроллере (либо в методе preExecute для всех действий в этом модуле, либо в конкретном действии - executeWhatever).
person
Vlad Jula-Nedelcu
schedule
22.02.2012