Symfony - 为什么有些变量会被输出转义,而其他变量却没有?

时间:2011-04-26 23:51:04

标签: symfony1 symfony-1.4

在Symfony 1.4视图中,为什么某些变量会被输出转义,而其他变量却没有?

我有escaping_strategy = true,并且escaping_method = ESC_SPECIALCHARS。

如果我这样做

$this->form = new SearchForm();

然后在我看来,$ form将是一个SearchForm。或者模型对象似乎也作为常规模型对象出现。

但是其他变量(如数组或MongoCursor)会转换为sfOutputEscaper___Decorator对象,而我无法直接访问原始方法。为什么呢?

我知道我可以获取原始变量然后使用它的方法,但它现在对我来说是一个猜谜游戏,这令人沮丧。

1 个答案:

答案 0 :(得分:3)

有一些类会跳过任何输出转义(因为它们主要呈现HTML)。默认情况下,sfView.class.php会将以下内容标记为安全:

sfForm,sfFormField,sfFormFieldSchema,sfModelGeneratorHelper

因此,这些类的对象或继承将不会输出转义。

如果你查看sfView.class.php中的相关代码,你还会发现如果你愿意的话,如何将其他类标记为安全:

sfOutputEscaper::markClassesAsSafe(array('sfForm', 'sfFormField', 'sfFormFieldSchema', 'sfModelGeneratorHelper'));