#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 Очистите все кэши в инструменте установки (!!!) и повторите попытку 🙂