services.yml
services:
_defaults:
autowire: true
autoconfigure: true
public: true
Контроллер:
/**
* @Security("has_role('ROLE_USER')")
* @Route("/", name = "homepage")
*/
public function indexAction(ContactService $contactService)
{
Ошибка
:indexAction()" requires that you provide a value for the "$contactService" argument.
Что мне нужно сделать, чтобы этот пример работал (метод автоматического ввода службы в контроллер)




В вашем файле services.yaml вам не хватает двух вещей:
App\:
resource: '../src/*'
App\Controller\:
resource: '../src/Controller'
tags: ['controller.service_arguments']
Первая строка говорит Symfony сделать классы в src / доступными для использования в качестве сервисов. Это создает службу для каждого класса, идентификатор которой является полным именем класса.
Для второй строки контроллеры импортируются отдельно, чтобы убедиться, что службы могут быть введены в качестве аргументов действия, даже если вы не расширяете какой-либо базовый класс контроллера.
https://symfony.com/doc/current/service_container/3.3-di-changes.html
Если вы не используете новую структуру каталогов Symfony Flex и все еще используете бандлы, конфигурация будет немного другой:
AppBundle\:
resource: '../../src/AppBundle/*'
AppBundle\Controller\:
resource: '../../src/AppBundle/Controller'
tags: ['controller.service_arguments']
https://symfony.com/doc/3.4/service_container/3.3-di-changes.html
Каков пример для пакетов поставщиков - ресурс: '../../vendor/easycorp/easyadmin-bundle/src/Controller' - не работает
Ваш пример не работает - для меня этот рабочий ресурс: '../../src/AppBundle/Controller' этот не работает ресурс: '../src/AppBundle/Controller' и для поставщика - я не могу найти способ работать пример: ресурс: 'vendor / easycorp / easyadmin-bundle / src / Controller'
@GregHmhmm Вы тоже адаптировали пространство имен? AppBundle\Controller\: resource: '../src/AppBundle/Controller'
Можете ли вы предоставить исходную документацию для сервисов из методов действий? :)