2011-04-26 93 views
2

在Symfony 1.4視圖中,爲什麼有些變量會輸出轉義,其他變量不會?Symfony - 爲什麼有些變量會得到輸出,其他變量不會?

我有escaping_strategy = true,escaping_method = ESC_SPECIALCHARS。

如果我做

$this->form = new SearchForm(); 

那麼在我看來,$形式將是一個SearchForm。或者模型對象看起來也像普通的模型對象一樣。

但其他變量,如數組或MongoCursor,被轉換成sfOutputEscaper___Decorator對象,我無法直接訪問原始方法。爲什麼?

我明白我可以得到原始變量然後使用它的方法,但現在對我來說這是一個猜謎遊戲,這令人沮喪。

回答

3

有一些類可以跳過任何輸出轉義(因爲它們主要呈現HTML)。默認情況下,sfView.class.php將迎來以下爲安全:

sfForm,sfFormField,sfFormFieldSchema,sfModelGeneratorHelper

的所以物品,或從這些類繼承不會輸出轉義。

如果你看一下在sfView.class.php相關的代碼,你還會發現如何標記附加類是安全的,如果你想這樣做:

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

啊,謝謝。我也看到了讓我絆倒的東西...... sfOutputEscaperObjectDecorator正在執行魔術__call方法,這讓我覺得它沒有逃脫。但是我對count()的調用返回1.這是因爲它沒有調用MongoCursor的count()方法,因爲sfOutputEscaperObjectDecorator有它自己的! – matt 2011-04-28 22:38:48

相關問題