Hi, I'm sorry to bring this up again but I'm really surprised there's been no reply regarding this problem yet.
Can anyone confirm if it's a real issue, in which case I'll open a ticket, or if it's now the desired behavior of Zend_Validate_NotEmpty for null values? Martin Carpentier On Tue, Sep 8, 2009 at 10:30, Martin Carpentier <[email protected] > wrote: > Hi again, > > Just following up on the issue I previously described to see if someone can > confirm the issue and to see if there's a different(better) solution for it. > It's a problem that need to be solved before I can upgrade our application > to 1.9.x because it messes with our custom error messages and translations. > > Thank you in advance for your help. > > Martin Carpentier > > > > On Thu, Sep 3, 2009 at 17:19, Martin Carpentier < > [email protected]> wrote: > >> Hi, >> >> since the modification made to Zend_Validate_NotEmpty in ZF 1.9.0 >> (checking the value for valid types) radio buttons set with the required >> flags don't return the proper error message if submitted without any of its >> options checked. >> >> here's a simple example to recreate the problem: >> >> // in a TestController >> public function testAction() >> { >> $request = $this->getRequest(); >> >> $form = new Zend_Form(); >> $form->setAction('/test/test') >> ->setName('formTest') >> ; >> >> $options = array( >> 'no' => 'no', >> 'yes' => 'yes', >> ); >> >> $form->addElement('Radio', 'testRadio', array( >> 'label' => "test ?", >> 'required' => true, >> 'multiOptions' => $options, >> )); >> >> $form->addElement('Submit', 'suivant', array( >> 'required' => false, >> 'ignore' => true, >> 'label' => 'submit test', >> )); >> >> if ($this->getRequest()->isPost()) { >> if ($form->isValid($request->getPost())) { >> Zend_Debug::dump($form); >> } >> } >> >> $this->view->form = $form; >> } >> >> Now, when submitting the form without selecting any option, we get the >> invalid message: "Invalid type given, value should be float, string, or >> integer" >> Before 1.9.0 we would get the correct and expected message: "Value is >> required and can't be empty" >> >> The problem is caused by the addition of those lines in >> Zend_Validate_NotEmpty: >> >> if (!is_string($value) && !is_int($value) && !is_float($value) && >> !is_bool($value)) { >> $this->_error(self::INVALID); >> return false; >> } >> >> With that check in place, a null $value would get flagged as being of an >> INVALID type >> A fix would be to check also that the value is not null like this: >> >> if (null !== $value && !is_string($value) && !is_int($value) && >> !is_float($value) && !is_bool($value)) { >> $this->_error(self::INVALID); >> return false; >> } >> >> Let me know if I should submit a bug report... or if I shouldn't be >> expecting that behavior anymore. >> >> Martin Carpentier >> > >
