2010-06-16 124 views
0

所以我有一个表格使用自定义过滤器(这实际上只是Zend_Filter_Null的副本)。当我直接调用它,它的工作原理:Zend Framework:我的自定义表单过滤器没有过滤!

$makeZeroNull = new My_Filter_MakeZeroNull(); 
$null = $makeZeroNull->filter('0'); 
//$null === null 

然而,当我尝试将其添加到一个元素在我的形式,当我打电话getValue()不过滤值。

class My_Form extends Zend_Form { 
    public function init() { 
     $makeZeroNull = new My_Filter_MakeZeroNull(); 
     $this->addElement('text', 'State_ID', array('filters' => array($makeZeroNull))); 
    } 
} 

//in controller 
if ($form->isValid($_POST)) { 
    $zero = $form->State_ID->getValue(); 
    //getValue() should return null, but it is returning 0 
} 

这是怎么回事?我究竟做错了什么?

回答

0

更新:现在我意识到,这是行不通的,所以我需要拿出不同的解决方案

我能解决这个问题是添加后添加专用的过滤器的唯一途径它的形式:

class My_Form extends Zend_Form { 
    public function init() { 
     $makeZeroNull = new Zend_Filter_Null(); 
     $this->addElement('text', 'State_ID'); 
     $this->getElement('State_ID')->addFilter($makeZeroNull); 
    } 
}