【发布时间】:2018-04-29 06:25:39
【问题描述】:
我使用 Respect/Validation 构建验证系统,并且我有国家名称的验证规则:
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 中获取存储库。我的 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]
如果有人给我一个正确的方向来解决我的问题,我将不胜感激。提前谢谢你。
【问题讨论】:
-
您需要将 CountryName 设为服务。
-
您需要将 CountryNameUnique 类作为服务,而不是在 CountryName 构造函数中自己创建对象,而是从服务管理器获取对象
-
感谢您的回复。 @RahulSingh 我是 Symfony 的新手。你能给我一些例子吗?如何从服务管理器获取对象?
-
我做了一些测试。看起来必须通过我为验证而制作的所有通用 php 类从控制器传递容器。
标签: symfony dependency-injection repository