Zend Framework: Мой пользовательский фильтр форм не фильтрует! - PullRequest
0 голосов
/ 16 июня 2010

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

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

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

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