Regex Symfony-一条消息用于多个断言

Regex Symfony-一条消息用于多个断言,regex,symfony,assert,Regex,Symfony,Assert,我有: /** * @Assert\Length( * min = 8, * minMessage = "message.erreur.affich1" * ) * @Assert\Length( * max = 20, * maxMessage = "message.erreur.affich1" * ) * @Assert\Regex( * pattern="/(?=.*\d)(?=.*[a-zA-Z])/", *

我有:

/**
 * @Assert\Length(
 *      min = 8,
 *      minMessage = "message.erreur.affich1"
 * )
 * @Assert\Length(
 *      max = 20,
 *      maxMessage = "message.erreur.affich1"
 * )
 * @Assert\Regex(
 *      pattern="/(?=.*\d)(?=.*[a-zA-Z])/",
 *      match=true,
 *      message="message.erreur.affich1"
 *
 * )
 */     
private $plainPassword;
我想为这3种情况显示一条消息,但我不能。 我有3次出现相同的消息

如何做到这一点,即使不遵守这3个条件,也只显示1条错误消息? 我唯一的解决办法可能是用正则表达式做所有的事情


谢谢你,你可以创建一个自定义的验证约束,在这里你可以检查所有三个断言,并在需要的时候应用错误消息。要同时对所有三个条件使用单个自定义断言,需要创建一个应用于整个实体的“类”验证器。这里是文档链接-

您有两个选项:

  • 您可以使用验证整个实体并根据需要提供合并输出的

  • 您不完全依赖于验证错误如何提供给表单,而是在收集验证错误后使用

  • 就我个人而言,我会选择选项2,但这取决于您是否使用表单/细枝等,您需要它的频率,以及“聚合错误消息”是否是您唯一需要的自定义等


    因此,如果您对1或2不满意,您必须立即向我们提供更多详细信息。

    不相关的问题:为什么密码有一个最大长度?如果消息相同,您可以在@Assert\length中组合最小值和最大值