Не удалось внедрить репозиторий в службу с Symfony

Я делаю простое приложение с 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: Uncaught Symfony \ Component \ DependencyInjection \ Exception \ AutowiringFailedException: Невозможно автоматически подключить службу «AppBundle \ Repository \ CommentsRepository»: аргумент «$ em» метода «Doctr
ine \ ORM \ EntityRepository :: __ construct () «должен иметь подсказку типа или явно указывать значение.
Не удается автоматически подключить службу «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

Решение

Поэтому я немного поэкспериментировал, и это похоже на работу:

// services.yml
AppBundle\Repository\CommentsRepository:
factory: 'doctrine.orm.entity_manager:getRepository'
arguments: ['AppBundle\Entity\Comments']

Это должно дать autowire достаточно информации для внедрения в хранилище.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector