Validation Symfony 2唯一性约束验证器

Validation Symfony 2唯一性约束验证器,validation,symfony-2.1,Validation,Symfony 2.1,有人能解释一下为什么Uniquentity约束类定义: // ... public $service = 'doctrine.orm.validator.unique'; public function validatedBy() { return $this->service; } //... 不仅仅是: public function validatedBy() { return "UniqueEntityValidator"; } UniquentityVa

有人能解释一下为什么Uniquentity约束类定义:

// ...

public $service = 'doctrine.orm.validator.unique';

public function validatedBy()
{
    return $this->service;
}

//...
不仅仅是:

public function validatedBy()
{
    return "UniqueEntityValidator";
}
UniquentityValidator类存在并具有所需的所有逻辑。这里的服务要点是什么

我这样问是因为现在我不能在Symfony框架之外使用Uniquentity,因为它有一些依赖性

如本文所述,validatedBy直接返回别名,而不是服务。这允许您在DIC中配置自己的验证程序服务:

services:
validator.unique.your_validator_name:
    class: Fully\Qualified\Validator\Class\Name
    tags:
        - { name: validator.constraint_validator, alias: doctrine.orm.validator.unique }
由于此Uniquentity约束是桥的一部分,这意味着您应该在Symfony2上下文中使用它。这就是为什么不能在框架之外真正使用它

但您可以将此服务值更改为类名。属性是公共的:,根据上面给出的文档,它将起作用。

如本文所述,validatedBy返回别名,而不是直接返回服务。这允许您在DIC中配置自己的验证程序服务:

services:
validator.unique.your_validator_name:
    class: Fully\Qualified\Validator\Class\Name
    tags:
        - { name: validator.constraint_validator, alias: doctrine.orm.validator.unique }
由于此Uniquentity约束是桥的一部分,这意味着您应该在Symfony2上下文中使用它。这就是为什么不能在框架之外真正使用它


但您可以将此服务值更改为类名。属性是公共的:,根据上面给出的文档,它将起作用。

这允许您覆盖验证器。这允许您覆盖验证器。