我使用自己的類擴展了Zend_Form,並讓它繼承我的所有表單。我的基類應用默認過濾器是剔除了雙空格,基本上所有的表單元素:Zend_Form:從一個元素中刪除默認過濾器
return trim(preg_replace('/\s+/', ' ', $value));
雖然平時我希望這所有的元素,也有一些場合它打破的東西,例如在文字區域(換行符也被刪除),所以我正在尋找一種方法來禁用某些元素的默認過濾器。 我嘗試這樣做(不成功):
$element->clearFilters();
然而內的形式的init(),該過濾器還沒有被設置($元素 - > getFilters()返回一個空數組)方法,調用等__toString方法只有當( )或isValid()它被應用,但我寧可不覆蓋這些方法只是爲了擺脫過濾器。一定會有更好的辦法?!
最乾淨的解決方案可能會選擇在該過濾器,並且默認情況下不應用 - 但我寧願保持默認狀態,並找到排除某些元素的方法。
@skooli是否嘗試過'$ element-> removeFilter('filterName');'也確定它實際上並不是一個驗證器。如果它是使用'$ element-> removeValidator('validatorName');' – martynthewolf 2011-05-24 14:57:29
結果與'clearFilters()'相同 - 因爲過濾器沒有在init()中設置,所以它沒有任何作用。並且它絕對是一個過濾器:p'$ this-> setElementFilters(array('FixWhitespaces'))' – skooli 2011-05-24 15:02:24
@skoolio true to form Zend Documentation is not up to scratch,but I did find find this。 '如果在任何時候你需要未經過濾的值,使用getUnfilteredValue()方法'也許它可能有用。 – martynthewolf 2011-05-24 15:08:58