Как получить репозиторий Symfony внутри класса - PullRequest
0 голосов
/ 29 апреля 2018

Я создаю систему проверки с соблюдением / проверкой и у меня есть правило проверки для названия страны:

class CountryName extends AllOf
{
    public function __construct()
    {
        parent::__construct(
            new StringType(),
            new NotEmpty(),
            new Alpha(),
            new Length(1, 100),
            new CountryNameUnique()
        );
    }
}

Внутри CountryNameUnique Я должен проверить имя в базе данных. Структура класса проста:

class CountryNameUnique extends AbstractRule
{
    public function validate($input)
    {
        // validation here

        return false;
    }
}

Но я понятия не имею, как получить репозиторий внутри CountryNameUnique. My services.yml

App\Domain\Country\Infrastructure\Repository\CountryRepository:
    public: true
    class: App\Domain\Country\Infrastructure\Repository\CountryRepository
    factory: ["@doctrine.orm.default_entity_manager", getRepository]
    arguments: [App\Domain\Country\Entity\Country]

Я был бы очень признателен, если бы кто-нибудь дал мне правильное направление, как решить мою проблему. Заранее спасибо.

1 Ответ

0 голосов
/ 29 апреля 2018

Как и для всех служб autowire включено по умолчанию, вы можете внедрить службу хранилища, получив хранилище в методе конструктора.

class CountryNameUnique
{
    private $countryRepository;

    public function __construct(CountryRepository $countryRepository)
    {
        $this->countryRepository = $countryRepository;
    }

    // ...
}
...