Validation 如何调试Zend\窗体?

Validation 如何调试Zend\窗体?,validation,debugging,zend-framework2,zend-form,zend-validate,Validation,Debugging,Zend Framework2,Zend Form,Zend Validate,在一个项目中,我有一个巨大的表单——有许多字段、嵌套的字段集、集合等。表单验证失败了,我不知道为什么 如何处理这个问题呢找出表单验证失败原因的有效方法是什么?我终于找到了一种检测验证错误(-s)的方法,而无需调试每个(子)字段集和每个(子)元素。很简单。或者在视图脚本中 我以前知道这种方法吗?当然有。但我对这种方式、它是如何工作的漠不关心,而消息的属性将我引入歧途: 当我遇到验证问题时,我在Zend\Form\isValid()调用后的某处设置了一个断点,然后在Xdebug中看到Zend\For

在一个项目中,我有一个巨大的表单——有许多字段、嵌套的字段集、集合等。表单验证失败了,我不知道为什么


如何处理这个问题呢找出表单验证失败原因的有效方法是什么?

我终于找到了一种检测验证错误(-s)的方法,而无需调试每个(子)字段集和每个(子)元素。很简单。或者在视图脚本中

我以前知道这种方法吗?当然有。但我对这种方式、它是如何工作的漠不关心,而
消息的属性将我引入歧途:


当我遇到验证问题时,我在
Zend\Form\isValid()
调用后的某处设置了一个断点,然后在Xdebug中看到
Zend\Form\messages
属性为空。我对此感到惊讶,因为属性“messages”表明它将包含(验证错误)消息。这个逻辑适用于-
表单
实际上是一个
元素
(因为
表单
扩展了
字段集
扩展了
元素
)。

我终于找到了一种方法来检测验证错误(-s),而无需调试每个(子子子子子子子)字段集和每个(子子子子子子子子)元素。很简单。或者在视图脚本中

我以前知道这种方法吗?当然有。但我对这种方式、它是如何工作的漠不关心,而
消息的属性将我引入歧途:


当我遇到验证问题时,我在
Zend\Form\isValid()
调用后的某处设置了一个断点,然后在Xdebug中看到
Zend\Form\messages
属性为空。我对此感到惊讶,因为属性“messages”表明它将包含(验证错误)消息。此逻辑适用于-
表单
实际上是一个
元素
(因为
表单
扩展
字段集
扩展
元素
)。

有效
之后,可以使用
$Form->getMessages()获取错误
。您还可以使用调试器,如xdebug@AlexP我不确定,它是否总是有帮助的。例如,在我的例子中:我已经在验证完成的地方调试了这个类,并期望收到消息。但是
Order\Form\OrderForm\messages
为空。
$result
false
,而
$messages
为空。@是的,当然,我正在用Xdebug调试。问题更多的是,为了加快调试速度,应该查找什么。@automatix如果您在
isValid()
之后调用它,您应该总是会遇到错误。如果您正在调试,我将从表单的输入过滤器开始。输入筛选器(以及每个元素的验证程序链)决定错误消息。在
isValid
之后,您可以使用
$form->getMessages()
获取错误。您还可以使用类似的调试器xdebug@AlexP我不确定,它是否总是有帮助的。例如,在我的例子中:我已经在验证完成的地方调试了这个类,并期望收到消息。但是
Order\Form\OrderForm\messages
为空。
$result
false
,而
$messages
为空。@是的,当然,我正在用Xdebug调试。问题更多的是,为了加快调试速度,应该查找什么。@automatix如果您在
isValid()
之后调用它,您应该总是会遇到错误。如果您正在调试,我将从表单的输入过滤器开始。输入过滤器(以及每个元素的验证程序链)决定了错误消息。