Вот подпись метода в контроллере:
public function myAction(Request $request, SessionInterface $session, LoggerInterface $logger)
Это то, что я написал в services.yml:
AppBundle\Controller\:
resource: '../../Controller'
public: true
tags: ['controller.service_arguments']
Обычно все параметры (запрос, сессия)и logger) автоматически вводятся.
Я называю это действие контроллера, используя Ajax, но есть проблема для logger (запрос и сессия хорошо внедрены):
Controller myAction requires that you provide a value for the "$logger" argument
Это происходит дляодин метод только потому, что ajax-вызовы некоторых других методов контроллера работают отлично.
Единственное отличие, которое я вижу при использовании некоторых инструментов отладки, состоит в том, что тот, который не работает, имеет соединение: близко, хотя другие имеют соединение: keep-alive.
Я не понимаю, почему это делается по-другому.
Когда я стираю параметр LoggerInterface, он работает хорошо, и соединение остается активным, как и другие.
Можете ли вы помочь?
Платформа Symfony 3
services:
_defaults:
# automatically injects dependencies in your services
autowire: true
# automatically registers your services as commands, event subscribers, etc.
autoconfigure: true
# this means you cannot fetch services directly from the container via $container->get()
# if you need to do this, you can override this setting on individual services
public: false