在Symfony 1.4视图中,为什么某些变量会被输出转义,而其他变量却没有?
我有escaping_strategy = true,并且escaping_method = ESC_SPECIALCHARS。
如果我这样做
$this->form = new SearchForm();
然后在我看来,$ form将是一个SearchForm。或者模型对象似乎也作为常规模型对象出现。
但是其他变量(如数组或MongoCursor)会转换为sfOutputEscaper___Decorator对象,而我无法直接访问原始方法。为什么呢?
我知道我可以获取原始变量然后使用它的方法,但它现在对我来说是一个猜谜游戏,这令人沮丧。
答案 0 :(得分:3)
有一些类会跳过任何输出转义(因为它们主要呈现HTML)。默认情况下,sfView.class.php会将以下内容标记为安全:
sfForm,sfFormField,sfFormFieldSchema,sfModelGeneratorHelper
因此,这些类的对象或继承将不会输出转义。
如果你查看sfView.class.php中的相关代码,你还会发现如果你愿意的话,如何将其他类标记为安全:
sfOutputEscaper::markClassesAsSafe(array('sfForm', 'sfFormField', 'sfFormFieldSchema', 'sfModelGeneratorHelper'));