views:

107

answers:

1

So I have a form that is using a custom filter (which is really just a copy of Zend_Filter_Null). When I call it directly, it works:

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

However, when I try to add it to an element in my form, it doesn't filter the value when I call 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
}

What is going on? What am I doing wrong?

A: 

Update: now I realize that this isn't working, so I need to come up with a different solution

The only way I was able to solve this issue was to specifically add the filter after adding it to the form:

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);
    }
}
Andrew