Не удается внедрить репозиторий на некотором контроллере Typo3

#dependency-injection #controller #typo3 #repository #typo3-7.6.x

#внедрение зависимостей #контроллер #typo3 #репозиторий #typo3-7.6.x

Вопрос:

В моем пользовательском контроллере я пытаюсь внедрить репозиторий как зависимый, например

 class FundedProjectController extends ActionController {


    /**
     * @var GeorgRingerNewsDomainRepositoryNewsRepository
     */
    protected $newsRepository;


    /**
     * Inject a news repository to enable DI
     *
     * @param GeorgRingerNewsDomainRepositoryNewsRepository $newsRepository
     */
    public function injectNewsRepository(GeorgRingerNewsDomainRepositoryNewsRepository $newsRepository)
    {
        $this->newsRepository = $newsRepository;
    }
...
 

Но когда я вызываю его в своем previewAction, у меня появляется ошибка, в которой говорится, что мой $this-> newsRepository равен null.

Но эта инъекция работает на этом контроллере, но я не могу понять, почему…

класс NewsController расширяет NewsBaseController

Я работаю над 7.6.32, веб-сайт запущен, но рабочий режим включен, все кэши очищены (также пробовал с помощью ?no_cache=1, также пробовал с помощью «@inject»

Комментарии:

1. Это маловероятная причина, но вы сбросили кеш автозагрузчика? В 7.6 это обязательно для запуска внедрения.

2. Нет, я только очистил кеш

Ответ №1:

TYPO3 теперь требует настройки внедрения зависимостей. Он больше не работает автоматически. В основном вам нужно добавить специальный Configuration/Services.yaml файл. Смотрите здесь, как его настроить.

Комментарии:

1. «Я работаю над службами 7.6.32». yaml не должен применяться к нему.

2. @Waldgeist Очистите все кэши в инструменте установки (!!!) и повторите попытку 🙂