Symfony 3.4 — Не работает метод сервиса.

Я относительно новичок в Symfony, и у меня возникли проблемы с некоторыми проблемами.
Я пытаюсь напечатать подсказку пользовательского класса RequestValidator в методе, вызываемом при вызове конечной точки.

Использование Symfony 3.4

Однако я получаю следующую ошибку:

Контроллер «ApiBundle \ Endpoints \ Healthcheck \ v1 \ Index :: check ()» требует, чтобы вы указали значение для аргумента «$ request». Либо аргумент имеет значение NULL, и значение NULL не было предоставлено, значение по умолчанию не было предоставлено, либо после этого есть необязательный аргумент.

Вот моя установка:

файл services.yml

...
_defaults:
autowire: true
autoconfigure: true

...

routing.yml

api.Healthcheck:
path: /healthcheck
controller: ApiBundle\Endpoints\Healthcheck\v1\Index::check
defaults: { _format: json }
methods:
- GET

И затем — внутри класса Index у меня есть следующее:

<?php

namespace ApiBundle\Endpoints\Healthcheck\v1;

use ApiBundle\Responses\ApiResponse;


class Index extends ApiResponse
{

public function check(HealthcheckRequest $request) {
var_dump($request);die;
}

}

Когда я делаю отладку: autowiring, я вижу мой HealthcheckRequest в списке.

Далее, когда я делаю то же самое и пробую подсказку типа в конструкторе класса Index, все это работает.

И, наконец, если я попытаюсь ввести подсказку Symfony / HttpFoundation / Request, внутри метода check (), он правильно его создаст.

В итоге:

Не работает :

  • check (HealthcheckRequest $ request)

За работой:

  • __construct (запрос HealtcheckRequest $)
  • проверка (запрос SymfonyRequest $)

Я делаю что-то неправильно? Любая помощь приветствуется.

0

Решение

Он является частью services.yaml уже в Symfony 4, но представлен в версии 3.3, так что это может помочь:

# controllers are imported separately to make sure services can be injected
# as action arguments even if you don't extend any base controller class

ApiBundle\Endpoints\:
resource: '../../Endpoints/*'
tags: ['controller.service_arguments']
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector