Метод requestClass :: validate не существует. Как позвонить нужному провайдеру? - PullRequest
0 голосов
/ 09 мая 2019

Я использую Lumen 5.8.4, пакет Dingo для создания API и пытаюсь использовать сторонний пакет Pearl (https://packagist.org/packages/pearl/lumen-request-validate) для проверки запроса формы, потому что Lumen не поддерживает его.

Я настроил все и логику проверки: правила и сообщения работают нормально, когда я определяю их в классе (через почтальонов я получаю «это поле обязательно» и т. Д.), Но когда все в порядке, когда все поля в порядке ( со стороны внешнего интерфейса) Я получил это сообщение

{
    "message": "Method App\\Http\\Requests\\StoreVehicleRequest::validate does not exist.",
    "status_code": 500,
    "debug": {
        "line": 102,
        "file": "E:\\Damjan\\Programiranje\\PHP\\Laravel\\Lumen\\automoto-lumen\\vendor\\illuminate\\support\\Traits\\Macroable.php",
        "class": "BadMethodCallException",
        "trace": [
            "#0 E:\\Damjan\\Programiranje\\PHP\\Laravel\\Lumen\\automoto-lumen\\vendor\\dingo\\api\\src\\Provider\\LumenServiceProvider.php(58): Illuminate\\Http\\Request->__call('validate', Array)"...

То, что я вижу здесь, приводит к тому, что dingos LumenServiceProvider у меня есть

 $this->app->afterResolving(ValidatesWhenResolved::class, function ($resolved) {
            $resolved->validate();
        });

и я думаю, что это должен использовать жемчуг RequestServiceProvider, где у меня есть.

 $this->app->afterResolving(RequestAbstract::class, function ($resolved) {
            $resolved->validateResolved();
        });

Или я что-то здесь упускаю. Борьба с этим весь день. Есть идеи?

1 Ответ

0 голосов
/ 10 мая 2019

ОК, я понял, что происходит. Вызывается RequestServiceProvider, но после него также запускается Dingo. У LumenServiceProvider есть проблема с Validator, которая показана здесь

https://github.com/dingo/api/pull/1654/files

Так что я не уверен, что поступил правильно, но это мое решение: потому что в Lumen нет публикации, и я не смог заставить ее работать со сторонними пакетами, я скопировал LumenServiceProvider в папку Provider, внес изменения и зарегистрировал его в bootstrap / app.php.

Пока это работает, надеюсь, никаких других проблем не возникнет.

...