I have a Registration form.
namespace User\Form;
use Zend\Form\Form;
class Register extends Form {
public function __construct() {
parent::__construct('register');
$this->setAttribute('action', 'new-account');
$this->setAttribute('method', 'post');
//$this->setInputFilter(new \User\Form\RegisterFilter); - used this prior to learning Fieldset
$this->add(new \User\Form\RegisterFieldsetUser);
// Submit
$this->add(array(
'name' => 'submit',
'attributes' => array(
'type' => 'submit',
'value' => 'Register',
'class' => 'btn btn-primary',
),
));
}
}
and the User fieldset:
(to make this short I've only left on field)
namespace User\Form;
use Zend\Form\Fieldset;
class RegisterFieldsetUser extends Fieldset {
public function __construct() {
parent::__construct('user');
// User Identifier
$identifier = new \Zend\Form\Element\Email();
$identifier->setName('identifier');
$identifier->setAttributes(array(
'id' => 'user-email',
'placeholder' => 'Email'
));
$identifier->setLabel('Your email:');
$this->add($identifier);
}
public function getInputFilterSpecification() {
return array(
'identifier' => array(
'filters' => array(
array('name' => 'StringTrim'),
),
'validators' => array(
array(
'name' => 'NotEmpty',
'break_chain_on_failure' => true,
'options' => array(
'messages' => array(
\Zend\Validator\NotEmpty::IS_EMPTY => 'You really have to enter something!',
),
),
),
array(
'name' => 'EmailAddress',
'options' => array(
'messages' => array(
\Zend\Validator\EmailAddress::INVALID_FORMAT => 'Hmm... this does not look valid!',
),
),
),
),
),
);
}
}
this is my action:
public function registerAction() {
$registerForm = new \User\Form\Register;
if ($this->getRequest()->isPost()) {
// Form processing
$formData = $this->getRequest()->getPost();
if ($registerForm->isValid()) {
// Yeeeeei
} else {
$registerForm->setData($formData);
return new ViewModel(array(
'form' => $registerForm,
));
}
} else {
return new ViewModel(array(
'form' => $registerForm,
));
}
}
Now, if I submit the form without entering anything, I get the message : "Value is required and can't be empty" (which is NOT the message I have set). But it's not an issue with the messages I set, because if I submit the form with an invalid email address ("asd/") then it doesn't say anything, no validation error. So, I assume no validation happens here.
Any clue why?
Before learning to use filedset, I had an InputFilter which worked perfectly fine, but following the book's learning curve, I got to using Fieldset.
I'm just a zf newb, learning from this book I've bought from leanpub (Michael Romer's "Web development with zf2"). I don't know the version used in the book (it was last updated in august 2013), but I use the latest (2.2.5).