Symfony - Is it possible to disable output escaping per module (or per template)?

落爺英雄遲暮 提交于 2020-01-01 09:37:06

问题


I'm trying to output some HTML in an XML template and Symfony's escaping method is messing it up. So I tried making a copy of settings.yml in the module's config folder, but it seems to be completely ignored. Is there an easy way to change the escaping_strategy and/or escaping_method settings per module or even per template?


回答1:


While output escaping is turned on you still have access to the raw value through $sf_data. For example, if the HTML you're trying to output was stored in a variable called html in your action:

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

You could get the unescaped value with this:

<?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

I don't believe there is a way to disable this functionality on a per-module basis.




回答2:


getRaw only works if the variable is passed from the action. for variable within view use

sfOutputEscaperGetterDecorator::unescape($html)



回答3:


Just run into this problem today and i manage to solve it by setting sfConfig::set('sf_escaping_strategy', false) in my controller (either in preExecute method for all the actions in that module or in a specific action - executeWhatever).



来源:https://stackoverflow.com/questions/2180644/symfony-is-it-possible-to-disable-output-escaping-per-module-or-per-template

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!