1

有人可以解释一下为什么 UniqueEntity约束类定义:

// ...

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

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

//...

而不仅仅是:

public function validatedBy()
{
    return "UniqueEntityValidator";
}

UniqueEntityValidator 类存在并且具有它需要的所有逻辑。这里的服务点是什么?

我问这个是因为由于某些依赖关系,现在我不能在 Symfony 框架之外使用 UniqueEntity。

4

1 回答 1

5

正如本节中针对 Validator 组件所描述的,它validatedBy()返回一个别名,而不是直接返回一个服务。Validator这允许您在 DIC中配置自己的服务:

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,根据上面给出的文档,它将起作用。

于 2012-08-22T14:33:50.877 回答