Symfony-多个断言的一条消息

时间:2018-07-10 15:30:27

标签: 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])/",
 *      match=true,
 *      message="message.erreur.affich1"
 *
 * )
 */     
private $plainPassword;

我想针对这3种情况显示1条消息,但我不能。 我有3次出现的相同消息。

该如何执行,即使不遵守3个条件,也只显示1条错误消息? 我唯一的解决方案可能是使用正则表达式做所有事情...

谢谢

2 个答案:

答案 0 :(得分:0)

您可以创建一个自定义验证约束,在其中检查所有三个断言,并在需要时应用错误消息。要一次对所有三个条件使用单个自定义声明,您需要创建一个适用于整个实体的“类”验证器。这是文档的链接-http://symfony.com/doc/current/validation/custom_constraint.html#class-constraint-validator

答案 1 :(得分:0)

您有两个选择:

  1. 您可以使用custom validation constraint来验证整个实体,并根据需要提供合并的输出。

  2. 您不完全依赖于如何将验证错误提供给表单,而是在收集到验证错误后使用validation service

我个人会选择选项2,但这取决于您是否使用Forms / Twig等,需要使用的频率,是否“汇总错误消息”是唯一需要的自定义设置,等等。

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