プロジェクトでは、多くのフィールド、ネストされたフィールドセット、コレクションなどを含む巨大なフォームがあります。フォームの検証に失敗しています。理由はわかりません。Zend Formのデバッグ方法は?
このような問題はどのように処理する必要がありますか? フォームの検証に失敗した理由を調べるには、効率的な方法がありますか?
プロジェクトでは、多くのフィールド、ネストされたフィールドセット、コレクションなどを含む巨大なフォームがあります。フォームの検証に失敗しています。理由はわかりません。Zend Formのデバッグ方法は?
このような問題はどのように処理する必要がありますか? フォームの検証に失敗した理由を調べるには、効率的な方法がありますか?
すべての(サブサブサブ)フィールドセットとすべての(サブサブサブ)要素をデバッグすることなく、検証エラー(-s)を検出する方法を発見しました。それは簡単です$form->getMessages()
。あるいは、ビュースクリプトで$this->FormElementErrors($form)
を指定します。
私は以前この方法について知っていましたか?確かに、私はしました。しかし、私はそれがどのように動作するか、方法について無関心だった、と財産messages
は私を惑わさ:私は検証の問題を得たとき
、私はZend\Form#isValid()
コールの後にどこかにブレークポイントを設定し、Xdebugをして、その後見て、Zend\Form#messages
プロパティが空だったこと。プロパティ "メッセージ"には、(検証エラー)メッセージが含まれることが示されているので、私はそれに驚いていました。このロジックはin Element
sに適用 - 実際Form
は(Form
extends
extends
Element
Fieldset
以降)Element
あります。
'isValid'の後に' $ form-> getMessages() 'を使ってエラーを取得できます。 – AlexP
xdebugのようなデバッガを使うこともできます – Unex
@AlexP私はよく分かりません。例えば。私の場合:私は[Zend \ Form#isValid() '](https://github.com/zendframework/zend-form/blob/master/src/Form.php#L523)クラスをデバッグしました。検証が完了し、メッセージを期待していたときに、しかし、 'Order \ Form \ OrderForm#messages'は空でした。 '$ result'は' false'で、 '$ messages'は空です。 – automatix