Validation Symfony在一条错误消息中组合相同的约束

Validation Symfony在一条错误消息中组合相同的约束,validation,symfony,Validation,Symfony,如何合并相同的约束冲突,使我只有一条错误消息。 如果所有字段都为空,我必须显示一条错误消息。 这是我的课 /** * @Assert\GroupSequence({"Required", "Username"}) */ class Credentials { /** * @Assert\NotBlank(groups={"Required"}) * @Assert\NotNull(groups={"Required"}) * @Assert\Email(

如何合并相同的约束冲突,使我只有一条错误消息。 如果所有字段都为空,我必须显示一条错误消息。 这是我的课

/**
 * @Assert\GroupSequence({"Required", "Username"})
 */
class Credentials
{
    /**
     * @Assert\NotBlank(groups={"Required"})
     * @Assert\NotNull(groups={"Required"})
     * @Assert\Email(groups={"Username"})
     */
    private $username;

    /**
     * @Assert\NotBlank(groups={"Required"})
     * @Assert\NotNull(groups={"Required"})
     */
    private $password;

    /**
     * @Assert\Email(groups={"Required"})
     */
    private $confirmPassword;

    // ...
}
这就是我验证它的方式,在错误中,我有三个类型为
NotBlank
的约束

$validator = Validation::createValidatorBuilder()
    ->enableAnnotationMapping()
    ->getValidator();

$errors = $validator->validate($credentials);

如果我使用这个,我必须手动检查字段是否为空(我不喜欢),所以我不再需要NotBlank和NotNull,如果字段有一些值,那么我必须手动检查它们是否是有效的电子邮件(我不喜欢)我也会删除电子邮件,我还需要知道哪些字段无效
$errors
var是
ConstraintViolationList
的一个实例,每个违规都是
ConstraintViolation
的一个实例,它有如下方法:
getConstraint()
getPropertyPath()
getMessage()
,等等。,因此,您可以对这些违规行为进行分类和合并,以显示一条错误消息。如果我使用此项,则可能会重复,我必须手动检查字段是否为空(我不喜欢),因此我不再需要NotBlank和NotNull,如果字段有一些值,则我必须手动检查它们是否为有效电子邮件(我不喜欢)我也会删除电子邮件,我还需要知道哪些字段无效
$errors
var是
ConstraintViolationList
的一个实例,每个违规都是
ConstraintViolation
的一个实例,它有如下方法:
getConstraint()
getPropertyPath()
getMessage()
,等等。,因此,您可以对这些冲突进行分类和合并,以显示一条错误消息。