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()
之后调用它,您应该总是会遇到错误。如果您正在调试,我将从表单的输入过滤器开始。输入过滤器(以及每个元素的验证程序链)决定了错误消息。