独立的Symfony2 Validator组件(条件验证)

时间:2013-06-03 13:14:31

标签: php symfony

我遇到了Symfony 2 Validator Component的问题。

我想在不使用注释和对象的情况下使用条件验证组。

目标是只有一个合法的号码是否该国家是FR。

例如:(我删除了所有不感兴趣的部分。)

$data = array('country'=>'FR', 'legalNo'=>'');

$myCollection = new Assert\Collection(array(
    'country'=>array(
        'constraints'=>array(
            new Assert\NotBlank()
        )
    ),
    'legalNo'=>array(
        'groups'=>array('legal'),
        'constraints'=>array(
            new Assert\NotBlank(array('groups'=>'legal')),
            new Assert\Length(array('groups'=>'legal', 'min'=>14, 'max'=>14))
        )
    )
);
$validator = Validation::createValidator();
$violations = $validator->validateValue($data, $myCollection, array(Constraint::DEFAULT_GROUP/* Default */));

$violations变量提供:“ 数组[legalNo]:此值不应为空白

我不明白为什么:

1 - 使用' NotBlank “legalNo约束。

2 - 为什么添加“ Array ”作为前缀。这里似乎有一个错误:

(@see line 189 Symfony \ Component \ Validator \ Validator.php $context->validateValue($value, $constraint, $groups); ExecutionContext validateValue函数的签名是:

public function validateValue($value, $constraints, $subPath = '', $groups = null)

所以看起来这些组被用作subpath变量。

更新:

好的,似乎有一个WIP(working in process) pull request on this issue

所以我的问题是:

  • 如果没有此功能,我该如何进行条件验证? (可能通过用Constraints\Collection函数覆盖addConstraint?)

0 个答案:

没有答案