Symfony 2.6.3 {{ form_errors( form ) }} 当 isValid() returns false 时为空白

Symfony 2.6.3 {{ form_errors( form ) }} is blank when isValid() returns false

我正在使用 Symfony V2.6.3

我有一个简单的表单,其中包含基于类型 class 的三个字段。

类型 class 通过 setDefaultOptions() 指定的实体 class 具有 use Symfony\Component\Validator\Constraints as Assert; 语句。

每个字段在实体 class 中都有一个 @Assert\NotBlank() 约束。

CSRF 已启用。

HTML5 验证已禁用。

如果我提交所有字段为空的表单,会发生以下情况:

我创建了一个自定义表单主题并将 {% block form_errors %} 修改为 转储 errors 变量。转储显示 errors 属性 是一个具有两个属性的 FormErrorIterator 对象:form,我相信字段定义,以及 errors 这是一个空数组。

奇怪的是,向下钻取 form 属性 会显示一个 errors 属性,它是一个包含单个 FormError 对象的数组错误信息。

这不是我第一次使用表格。过去它对我来说效果很好。这可能是 2.6 中的新错误吗?

我搜索过这个,我发现的都是 getErrors() 也没有返回任何内容的情况。

提前致谢, 戴夫

表单错误绑定到 FormType,而不是完整的表单。 RootType 将只包含从子类型冒出的错误。子类型将仅包含其类型的错误以及从子类型等冒出的错误。

{{ form_errors(form) }}只会呈现根表单的错误。假设 form.name 字段出现错误,您可以通过执行以下操作得到此错误:{{ form_errors(form.name) }}.

好的。我终于找到了这个问题的答案。

非常感谢 Symfony 论坛上的 thenetimp。他遇到了同样的问题并解决了 (http://forum.symfony-project.org/viewtopic.php?f=23&t=42841&p=135003&hilit=form_errors#p135003)。

事实证明,您必须在 调用 isValid() 之后调用 createView() 。当您考虑时,这实际上是有道理的。