В Symfony 3.4 у меня есть контроллер, в котором некоторые параметры заполнены из URL, а также мне нужен сервис для внедрения. Я получаю следующее сообщение об ошибке:
Контроллер
"Acs \ EventNodeBundle \ Controller \ MainController :: calendarAction ()"
требует, чтобы вы указали значение для аргумента "$ router". Или
аргумент обнуляем, и нулевое значение не было предоставлено, нет
предоставлено значение по умолчанию или потому что есть необязательный
аргумент после этого.
Почему Symfony не вводит маршрутизатор? Это мой код:
Контроллер:
...
use Symfony\Bundle\FrameworkBundle\Routing\Router;
/**
* Class MainController
*/
class MainController extends Controller
{
/**
* @param Router $router
* @param null|int $year
* @param null|int $month
* @return RedirectResponse|Response
*/
public function calendarAction(Router $router, $year = null, $month = null)
{
...
. Services.yml:
...
services:
# default configuration for services in *this* file
_defaults:
# automatically injects dependencies in services
autowire: true
# automatically registers services as commands, event subscribers, etc.
autoconfigure: true
# services cannot be fetched directly from the container via $container->get()
# need to override this setting individually
public: false
bind:
$entityManager: '@Doctrine\ORM\EntityManagerInterface'
# enable autowiring for controllers
Acs\EventNodeBundle\Controller\:
resource: '../../Controller'
public: true
tags: ['controller.service_arguments']
...
И пойдут:
...
eventnode_main:
path: /{year}/{month}
methods: [GET]
defaults: { _controller: AcsEventNodeBundle:Main:calendar, year: null, month: null}
requirements:
year: '\d+'
month: '\d+'
...