如何调试Symfony2表单?

4
我正在创建一个注册页面,基于FOSUserBundle创建新用户。
每当我提交新用户表单时,在表单的顶部会出现以下信息: 该值不应为空。
显然,这是一条全局消息,与表单上的特定字段无关,因此我想它必须与我的User类的任何其他属性有关。
Symfony2提供了哪些机制,让我能够找出表单中的问题? 我正在使用Symfony 2.5.0。
(我可以发布更多关于我的配置、User类和表单的详细信息……但我真的很想学习如何自己找到这个问题)
感谢社区提前的帮助!
5个回答

1

请查看dev前端控制器上的调试工具栏,这是一个很好的调试方式。


0

尝试使用$form->getErrorsAsString()$form->getErrors()方法将表单错误作为字符串打印出来。

摘自source

/**
 * Returns a string representation of all form errors (including children errors).
 *
 * This method should only be used to help debug a form.
 *
 * @param int     $level The indentation level (used internally)
 *
 * @return string A string representation of all errors
 *
 * @deprecated Deprecated since version 2.5, to be removed in 3.0. Use
 *             {@link getErrors()} instead and cast the result to a string.
 */
public function getErrorsAsString($level = 0)
{
    return self::indent((string) $this->getErrors(true, false), $level);
}

0

这是一个棘手的错误,很难跟踪。我自己无法追踪此类错误,所以我在 Google 和 SO 上搜索。我找到了解释我的表单问题的答案。其中一个字段上的验证规则没有包含在表单中。

因此,在您的情况下,可能也是同样的原因。可能有一个验证规则(最有可能是 NotBlank)应用于未包含在表单中的字段。尝试逐个禁用它们以找出导致此错误的字段。


0

我认为你应该尝试打印$request->get('name_of_your_form'),并在将其与表单绑定后,尝试打印$form->getData()。这应该足以清楚地了解哪个字段导致了问题。

还要注意验证组


0

你应该在 /_profiler 的日志中看到更详细的错误描述,甚至可能是 SQL 错误,这可能会导致问题的根源。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接