我使用Respect / Validation构建验证系统,并且我有国家/地区名称的验证规则:
class CountryName extends AllOf
{
public function __construct()
{
parent::__construct(
new StringType(),
new NotEmpty(),
new Alpha(),
new Length(1, 100),
new CountryNameUnique()
);
}
}
Inside CountryUnique我必须在数据库中检查名称。课程结构很简单:
class CountryNameUnique extends AbstractRule
{
public function validate($input)
{
// validation here
return false;
}
}
但我不知道如何在CountryNameUnique中获取存储库。我的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]
如果有人给我一个正确的方向如何解决我的问题,我将非常感激。提前谢谢。
答案 0 :(得分:0)
对于默认启用的所有服务autowire
,您可以通过在构造函数方法中获取存储库来注入存储库服务。
class CountryNameUnique
{
private $countryRepository;
public function __construct(CountryRepository $countryRepository)
{
$this->countryRepository = $countryRepository;
}
// ...
}