我正在使用Symfony进行简单的应用程序。我在这里配置了服务
services:
app.service.comments_service:
class: AppBundle\Service\CommentsService
autowire: true
app.service.projects_service:
class: AppBundle\Service\ProjectService
autowire: true
app.service.files_service:
class: AppBundle\Service\FilesService
autowire: true
app.service.users_service:
class: AppBundle\Service\UserService
autowire: true
我的服务使用存储库(注释服务使用注释存储库),这里是CommentsService
的构造函数
属性
private $entityManager;
private $session;
private $manager;
private $commentsRepository;
构造
public function __construct(
EntityManagerInterface $entityManager,
Session $session,
ManagerRegistry $manager,CommentsRepository $commentsRepository)
{
$this->entityManager = $entityManager;
$this->session = $session;
$this->manager = $manager;
$this->commentsRepository = $commentsRepository;
}
当我尝试运行我的应用程序时,我收到此错误
PHP致命错误:未捕获的Symfony \ Component \ DependencyInjection \ Exception \ AutowiringFailedException:无法自动装配服务" AppBundle \ Repository \ CommentsRepository":参数" $ em"方法" Doctr INE \ ORM \ EntityRepository :: __构建体()"必须具有类型提示或明确赋予值。 无法自动服务" app.service.comments_service":参数" $ commentsRepository"方法" AppBundle \ Service \ CommentsService :: __ construct()"引用类" AppBundle \ Repository \ CommentsRepos itory"但是没有这样的服务。在C:\ xampp \ htdocs \ WINbetTaskManager \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ AutowirePass.php:285
我有什么想法可以解决这个问题吗?
答案 0 :(得分:1)
所以我做了一些实验,这似乎有效:
// services.yml
AppBundle\Repository\CommentsRepository:
factory: 'doctrine.orm.entity_manager:getRepository'
arguments: ['AppBundle\Entity\Comments']
这应该给autowire足够的信息来注入存储库。