【发布时间】:2015-01-25 21:25:09
【问题描述】:
我正在使用 Symfony V2.6.3
我有一个基于 Type 类的包含三个字段的简单表单。
Type 类通过setDefaultOptions() 指定的Entity 类有use Symfony\Component\Validator\Constraints as Assert; 语句。
Entity 类中的每个字段都有一个@Assert\NotBlank() 约束。
CSRF 已启用。
HTML5 验证已禁用。
如果我提交所有字段为空白的表单,则会发生以下情况:
- 在控制器中:
-
isValid()返回错误 -
getErrors( true )为每个字段返回一个错误
-
- 在模板中:
-
{{ form_errors( form ) }}不会为表单或任何字段生成文本。
-
我创建了一个自定义表单主题并将{% block form_errors %} 修改为
转储errors 变量。转储显示errors 属性是具有两个属性的FormErrorIterator 对象:form,我相信是字段定义,errors 是一个空数组。
奇怪的是,深入到 form 属性会发现 errors 属性是一个数组,其中包含一个包含错误消息的 FormError 对象。
这不是我第一次使用表单。过去它对我来说效果很好。这可能是 2.6 中的新错误吗?
我已经搜索过这个,我发现的只是getErrors() 也没有返回任何内容的情况。
提前致谢, 戴夫
【问题讨论】:
-
也许你已经为这些字段禁用了
error_bubbling。form_errors仅显示整个表单的错误或冒泡错误。 -
@sjagr 打败了我。 'error_bubbling' 默认为 false,因为标准约定是让每个字段处理它自己的错误。
-
@DerickF 正确,您要么必须在各个字段上使用
form_errors,为每个字段打开error_bubbling,要么对整个表单或整个表单使用完整的form_widget个别领域。不是form_label或form_row