【问题标题】:Symfony 2 UniqueEntity constraint validatorSymfony 2 UniqueEntity 约束验证器
【发布时间】:2012-08-17 23:56:25
【问题描述】:

谁能解释一下为什么 UniqueEntity constraint 类定义:

// ...

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

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

//...

不仅仅是:

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

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

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

【问题讨论】:

  • 这允许您覆盖验证器。

标签: validation symfony-2.1


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    相关资源
    最近更新 更多