Symfony - 是否可以禁用每个模块(或每个模板)的输出转义?

时间:2010-02-01 22:50:21

标签: php symfony1 symfony-1.4

我正在尝试在XML模板中输出一些HTML,并且Symfony的转义方法正在弄乱它。所以我尝试在模块的配置文件夹中制作settings.yml的副本,但它似乎完全被忽略了。是否有一种简单的方法可以更改每个模块甚至每个模板的escaping_strategy和/或escaping_method设置?

3 个答案:

答案 0 :(得分:17)

启用输出转义功能后,您仍然可以通过$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

我认为没有办法在每个模块的基础上禁用此功能。

答案 1 :(得分:11)

getRaw仅在从操作传递变量时才有效。对于视图内的变量使用

sfOutputEscaperGetterDecorator::unescape($html)

答案 2 :(得分:9)

今天遇到这个问题,我设法通过在我的控制器中设置sfConfig::set('sf_escaping_strategy', false)来解决这个问题(在preExecute方法中为该模块中的所有操作或特定操作设置{{1} }})。