Zend Framework: мой пользовательский фильтр формы не фильтрует!

Итак, у меня есть форма, использующая собственный фильтр (который на самом деле является копией 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
}

Что здесь происходит? Что я делаю неправильно?


person Andrew    schedule 16.06.2010    source источник


Ответы (1)


Обновление: теперь я понимаю, что это не работает, поэтому мне нужно придумать другое решение.

Единственный способ, которым я смог решить эту проблему, - это специально добавить фильтр после его добавления в форму:

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