我使用自己的类扩展了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