在一个Symfony自定义验证器中组合重复的属性约束

时间:2014-04-09 14:39:11

标签: php validation symfony

我有一个具有不同实体和密码属性的应用程序。目前,每个实体都有一组重复的密码属性属性约束:

<?php
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
     // ...
     $metadata->addPropertyConstraint('password', new Length(...);
     $metadata->addPropertyConstraint('password', new NotBlank(...);
     $metadata->addPropertyConstraint('password', new Custom1(...);
     $metadata->addPropertyConstraint('password', new Custom2(...);
     // ...
}

我想要一个自定义验证器&#34; PasswordValidator&#34;哪个&#34;团体&#34;如上所述的所有不同约束。在这种情况下,我只需要为每个密码属性添加一个属性约束。

像这样:

<?php
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
     // ...
     $metadata->addPropertyConstraint('password', new MyCustomPassword(...);
     // ...
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您需要使用All Symfony2内置约束:http://symfony.com/doc/current/reference/constraints/All.html

基本上,这就是你的情况:

<?php
use Symfony\Component\Validator\Constraints as Assert;

public static function loadValidatorMetadata(ClassMetadata $metadata)
{
     // ...
     $metadata->addPropertyConstraint(
        'password', 
        new Assert\All(
            new Assert\Length(...),
            new Assert\NotBlank(...),
            new Assert\Custom1(...),
            new Assert\Custom2(...)
        )
     );