Symfony 3.4 - Не работает метод сервиса. - PullRequest
0 голосов
/ 27 сентября 2018

Я относительно новичок в 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 $ request)
  • check (SymfonyRequest $ request)

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

1 Ответ

0 голосов
/ 04 января 2019

Он является частью 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']
...