symfony - 如何在类中获取 Symfony 存储库
问题描述
我使用尊重/验证建立验证系统,并且我有国家名称验证规则:
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 中获取存储库。我的服务.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]
如果有人给我一个正确的方向来解决我的问题,我将不胜感激。先感谢您。
解决方案
至于autowire
默认启用所有服务,您可以通过构造函数方法获取存储库来注入存储库服务。
class CountryNameUnique
{
private $countryRepository;
public function __construct(CountryRepository $countryRepository)
{
$this->countryRepository = $countryRepository;
}
// ...
}
推荐阅读
- excel - 包含“Shift”的 Excel VBA 宏快捷方式停止包含 .Open 的宏运行
- ios - iOS网络扩展包解析
- database - 如何在单元测试中使用 Flyway 时重置 SQLite 自动增量
- sql - JSON数组解析成行
- c# - 如何使用 asp.net core 3.1 解析 mailgun webhook 发布请求数据
- python - 如何解决execfile中的python回溯错误?
- swashbuckle - 如何配置 Swashbuckle.AspNetCore.CLI 就像我可以在 startup.cs 中配置 Swashbuckle.AspNetCore.Swagger
- php - 我想更改时区
- docker - 重启 jwilder/nginx-proxy 路由的服务
- python - 使用python将xml转换为csv