Zend Framework:我的自定义表单过滤器没有过滤!

时间:2010-06-16 18:19:45

标签: php zend-framework zend-filter

所以我有一个使用自定义过滤器的表单(实际上只是Zend_Filter_Null的副本)。当我直接调用它时,它可以工作:

$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
}

发生了什么事?我做错了什么?

1 个答案:

答案 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);
    }
}