Symfony1 Symfony-为什么一些变量得到输出转义,而其他变量没有?

Symfony1 Symfony-为什么一些变量得到输出转义,而其他变量没有?,symfony1,symfony-1.4,Symfony1,Symfony 1.4,在Symfony 1.4视图中,为什么一些变量会得到转义输出,而其他变量则不会 我有escaping\u strategy=true和escaping\u method=ESC\u SPECIALCHARS 如果我这样做 $this->form = new SearchForm(); 那么在我看来,$form将是一个SearchForm。或模型对象似乎也作为常规模型对象出现 但其他变量,如数组或MongoCursor,会被转换为sfOutputEscaper\uuuuuuuu装饰器对象,

在Symfony 1.4视图中,为什么一些变量会得到转义输出,而其他变量则不会

我有escaping\u strategy=true和escaping\u method=ESC\u SPECIALCHARS

如果我这样做

$this->form = new SearchForm();
那么在我看来,$form将是一个SearchForm。或模型对象似乎也作为常规模型对象出现

但其他变量,如数组或MongoCursor,会被转换为sfOutputEscaper\uuuuuuuu装饰器对象,我无法直接访问原始方法。为什么?


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

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

sfForm、sfFormField、sfFormFieldSchema、sfModelGeneratorHelper

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

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

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

啊,谢谢。我也明白是什么让我绊倒了…SfoutputEscapeObjectDecorator正在执行神奇的调用方法,这让我觉得它没有被逃脱。但是我对count()的调用返回1。这是因为它没有调用MongoCursor的count()方法,因为SFOutputEscapeObjectDecorator有自己的方法!