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)的方法,無需調試每個(sub-sub-sub)fieldset和每個(sub-sub-sub)元素。這很簡單$form->getMessages()。或者在視圖腳本中選擇$this->FormElementErrors($form)

以前我知道這個方法嗎?當然,我做到了。但我不關心的方式,它是如何工作的,和物業messages使我誤入歧途:

當我驗證問題,我的Zend\Form#isValid()調用後設置一個斷點的地方,看到那麼Xdebug的,那Zend\Form#messages屬性是空的。我對此感到驚訝,因爲屬性「消息」表明,它將包含(驗證錯誤)消息。這個邏輯適用於in Elements - 和Form實際上Element(因爲FormextendsFieldsetextendsElement)。