我在Symfony 2.8中有一个表单,其中包含以下字段:
$builder->add('a', TextType::class, [
'label' => '',
'constraints' => [
new NotBlank(
[
'message' => 'foo'
]
),
new Regex(
[
'pattern' => '/^\d+$/',
'message' => 'bar'
]
),
new GreaterThan(
[
'value' => 0,
'message' => 'empty'
]
)
]
]);
`
当字段值为空时,我们会从每个约束中收到错误消息。如何防止执行第一个约束失败后定义的约束?
答案 0 :(得分:0)
我不知道您的问题是否有更直接的解决方案,但您可以使用callback验证该字段,并在第一次检查失败时添加错误消息。< / p>
答案 1 :(得分:0)
解决方案可能是使用不同的错误级别:
http://symfony.com/doc/current/validation/severity.html
new NotBlank(
[
'message' => 'foo',
'payload' =>
[
'severity' => 'lv1'
]
]
),
...
如果您设置了不同的级别(例如'lv1','lv2'),您只需在选择要显示的内容的错误上创建一个显示逻辑。
另一种方法是检查实体的每个属性,查找错误:
$errors = $this->get('validator')->validateProperty($entity, 'name of the property');
if (count($errors)) {
// Show only the first error
}
还有其他方法可以实现这一目标,但您应该向我们提供有关代码逻辑的更多详细信息。