2010-01-12 63 views
2

我有一個包含幾個字段的註冊表單。其中一個看起來像這樣:Zend表單和Zend過濾器HtmlEntities

 $first_name = new Zend_Form_Element_Text('first_name'); 
     $first_name ->setLabel("First name") 
        ->setRequired(true) 
        ->addFilter(new Zend_Filter_HtmlEntities()); 

我使用相同的表單編輯用戶的詳細信息。 問題在於Zend_filter_HtmlEntities。當我將表單的數據發送到數據庫時,它完成了這項工作,它將html特殊字符替換爲替代。 然而,當我初始化這個表單並從數據庫記錄中給它默認值時,Zend_filter_HtmlEntities再次過濾這些值,並且在我的輸入字段中出現一些垃圾。

例如,在第一名輸入欄,代替<b>Name, I get &amp;lt;b&amp;gt; Name

這意味着,當表單用默認值呈現,元件過濾器再次施加和<因爲& LT; :(

有一種優雅的解決這個問題,除了之前被傳遞到窗體?

回答

2

添加Zend_Filter_HtmlEntities來過濾重新格式化數據,我會完全避免的。相反,我會擔心逃逸html實體只有在向用戶顯示數據時

+0

這是普遍認可的正確方法嗎?不要將htmlentities/specialchars過濾器添加到表單等,只在輸出數據時使用它(而不是輸入) – mr12086 2012-04-30 12:36:04