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 に答える