【问题标题】:Symfony - Is it possible to disable output escaping per module (or per template)?Symfony - 是否可以禁用每个模块(或每个模板)的输出转义?
【发布时间】:2010-02-01 22:50:21
【问题描述】:

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

【问题讨论】:

    标签: php symfony1 symfony-1.4


    【解决方案1】:

    打开输出转义后,您仍然可以通过$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

    我不相信有办法在每个模块的基础上禁用此功能。

    【讨论】:

    • 看起来很酷,不知道这个。我不明白这样的问题,正要回答,只是为了一个对象: $yourObject->getRawValue()->getProperty() .. 如果有帮助...
    • Julien:如果他试图使用模型对象,您的解决方案将是完美的,您应该发布答案以防万一。
    • 感谢 Cryo,$sf_data->getRaw() 成功了。 Julien,感谢您提供有关如何从模型中使用它的信息。
    【解决方案2】:

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

    sfOutputEscaperGetterDecorator::unescape($html)
    

    【讨论】:

    • 我希望取消转义某些属性,但不幸的是,属性不能通过 $sf_data->getRaw(..) 访问。但你的回答成功了!谢谢!
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 1970-01-01
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多