1

プロジェクトでは、多くのフィールド、ネストされたフィールドセット、コレクションなどを含む巨大なフォームがあります。フォームの検証に失敗しています。理由はわかりません。Zend Formのデバッグ方法は?

このような問題はどのように処理する必要がありますか? フォームの検証に失敗した理由を調べるには、効率的な方法がありますか?

+1

'isValid'の後に' $ form-> getMessages() 'を使ってエラーを取得できます。 – AlexP

+0

xdebugのようなデバッガを使うこともできます – Unex

+0

@AlexP私はよく分かりません。例えば。私の場合:私は[Zend \ Form#isValid() '](https://github.com/zendframework/zend-form/blob/master/src/Form.php#L523)クラスをデバッグしました。検証が完了し、メッセージを期待していたときに、しかし、 'Order \ Form \ OrderForm#messages'は空でした。 '$ result'は' false'で、 '$ messages'は空です。 – automatix

答えて

0

すべての(サブサブサブ)フィールドセットとすべての(サブサブサブ)要素をデバッグすることなく、検証エラー(-s)を検出する方法を発見しました。それは簡単です$form->getMessages()。あるいは、ビュースクリプトで$this->FormElementErrors($form)を指定します。

私は以前この方法について知っていましたか?確かに、私はしました。しかし、私はそれがどのように動作するか、方法について無関心だった、と財産messagesは私を惑わさ:私は検証の問題を得たとき

、私はZend\Form#isValid()コールの後にどこかにブレークポイントを設定し、Xdebugをして、その後見て、Zend\Form#messagesプロパティが空だったこと。プロパティ "メッセージ"には、(検証エラー)メッセージが含まれることが示されているので、私はそれに驚いていました。このロジックはin Elementsに適用 - 実際Formは(FormextendsextendsElementFieldset以降)Elementあります。