我有一个表单,我使用这样的注释生成器创建它:
$builder = new AnnotationBuilder();
$fieldset = $builder->createForm(new \Application\Entity\Example());
$this->add($fieldset);
$this->setBaseFieldset($fieldset);
在控制器中,一切都是标准的:
$entity = new \Application\Entity\Example();
$form = new \Application\Form\Example();
$form->bind($entity);
if($this->getRequest()->isPost()) {
$form->setData($this->getRequest()->getPost());
if($form->isValid()) {
// save ....
}
}
问题是,$form->isValid() 总是返回 true,即使提交的是空的或无效的表单。更奇怪的是,表单元素的错误信息都被设置了,暗示它们是无效的。
我查看了 ZF2 Form / InputFilter / Input 类,发现: Input->isValid() 被调用了两次:一次在 Form->isValid() 中,一次在 Form->bindValues() 中Input->isValid() ($this->getValidatorChain) 中的验证器链为空,在第二次调用(来自 bindValues)中它是正确的。
可能出了什么问题?
PS。使用开发版本 2.1