有人可以解释为什么UniqueEntity 约束类定义:
// ...
public $service = 'doctrine.orm.validator.unique';
public function validatedBy()
{
return $this->service;
}
//...
而不仅仅是:
public function validatedBy()
{
return "UniqueEntityValidator";
}
UniqueEntityValidator类存在并具有所需的所有逻辑。这里的服务点是什么?
我问这个是因为现在由于某些依赖性,我不能在Symfony框架之外使用UniqueEntity。
答案 0 :(得分:5)
如此recipe for the Validator component中所述,validatedBy()
会返回别名,而不是直接返回服务。这允许您在DIC中配置自己的Validator
服务:
services:
validator.unique.your_validator_name:
class: Fully\Qualified\Validator\Class\Name
tags:
- { name: validator.constraint_validator, alias: doctrine.orm.validator.unique }
由于此UniqueEntity
约束是桥的一部分,这意味着您应该在Symfony2上下文中使用它。这就是为什么你不能在框架之外真正使用它。
但您可以将此service
值更改为类名。属性是公共的:https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntity.php,根据上面给出的文档,它将起作用。