AlekseyArh
@AlekseyArh
Кибер существо

Как подключить зависимость в drupal 8?

Решил разобраться с Drupal 8. Создал контроллер, но как в него передать к примеру экземпляры PDO и Twig?
Подозреваю что где то нужно создать файл типа module_name.dependency.yml но гугл молчит.
e4812645f21c44a6b6a5d6b1abc72358.png
  • Вопрос задан
  • 218 просмотров
Решения вопроса 1
AlekseyArh
@AlekseyArh Автор вопроса
Кибер существо
В общем нужно создать файл video.services.yml
services:
  video.index_controller:
    class: Drupal\video\Controller\VideoIndexController
    arguments: ['@video.model']
  video.model:
    class: Drupal\video\Model\VideoModel
    arguments: ['@database']


А в файле роутинга video.routing.yml
Вместо этого:
video.id:
  path: '/video/{id}'
  defaults:
    _controller: 'Drupal\video\Controller\VideoIndexController::video'
  requirements:
    _permission: 'access content'

Писать вот так. То есть использовать алиасы из файла video.services.yml и одно двоеточие вместо двух.
video.id:
  path: '/video/{id}'
  defaults:
    _controller: 'video.index_controller:video'
  requirements:
    _permission: 'access content'


В общем друпал та ещё помойка.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@oxidmod
посмотрите родительский контрллер. там наверняка есть контейнер, с которого можно вытащить все что нужно.
зы. ну и посмотрите те контроллеры которые уже есть. разберитесь как они работают. Поставьте дебагер в их конструкторе и увидите откуда там беруться зависимости
Ответ написан
drupby
@drupby
Инъекция сервиса в контроллер https://docs.acquia.com/article/lesson-113-depende...
Сервисы ядра в cgit.drupalcode.org/drupal/tree/core/core.services.yml
Сервисы модулей соответственно в корневом каталоге модуля в файле MODULENAME.services.yml
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы