Symfony - возможно ли отключить экранирование выходных данных для каждого модуля (или для каждого шаблона)? - PullRequest
7 голосов
/ 02 февраля 2010

Я пытаюсь вывести некоторый HTML в шаблоне XML, и метод экранирования Symfony все испортил. Поэтому я попытался сделать копию файла settings.yml в папке конфигурации модуля, но, похоже, он полностью игнорируется. Есть ли простой способ изменить настройки escaping_strategy и / или escaping_method для модуля или даже для шаблона?

Ответы [ 3 ]

17 голосов
/ 02 февраля 2010

Пока экранирование включено, у вас все еще есть доступ к необработанному значению через $sf_data. Например, если HTML-код, который вы пытаетесь вывести, был сохранен в переменной html в вашем действии:

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

Вы можете получить неэкранированное значение с помощью:

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

http://www.symfony -project.org / книга / 1_0 / 07-внутри-View-Layer # chapter_07_sub_activating_output_escaping

Я не верю, что есть способ отключить эту функцию для каждого модуля.

11 голосов
/ 28 июня 2011

getRaw работает, только если переменная передана из действия. для переменной в поле зрения используйте

sfOutputEscaperGetterDecorator::unescape($html)
9 голосов
/ 22 февраля 2012

Просто столкнитесь с этой проблемой сегодня, и мне удается решить ее, установив sfConfig::set('sf_escaping_strategy', false) в моем контроллере (либо в методе preExecute для всех действий в этом модуле, либо в конкретном действии - executeWhatever).

...