次のような注釈ビルダーを使用して作成したフォームがあります。
$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()が2回呼び出されます。1回はForm-> isValid()で、もう1回はForm-> bindValues()で呼び出されます。 Input-> isValid()($ this-> getValidatorChain)のバリデーターチェーンは空であり、(bindValuesからの)2番目の呼び出しでは正しいです。
何がうまくいかなかったのでしょうか?
PS。develバージョン2.1を使用する