【问题标题】:Method requestClass::validate does not exist. How to call right provider?方法 requestClass::validate 不存在。如何调用正确的提供者?
【发布时间】:2019-09-27 17:16:08
【问题描述】:

我正在使用 Lumen 5.8.4,Dingo 包来制作 api,我正在尝试使用第三方包珍珠 (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();
        });

或者我在这里遗漏了一些东西。挣扎着这一天。有什么想法吗?

【问题讨论】:

    标签: validation request lumen


    【解决方案1】:

    好的,我已经弄清楚发生了什么。 RequestServiceProvider 被调用,但在它之后 Dingo 也在运行 LumenServiceProvider 女巫对 Validator 有问题,这里显示的是

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

    所以我不确定我做对了,但这是我的解决方案: 因为 Lumen 中没有发布,而且我无法使其与第三方软件包一起使用,所以我将 LumenServiceProvider 复制到我的 Provider 文件夹中,进行更改,并将其注册到 bootstrap/app.php 中。

    它现在可以工作,希望不会产生任何其他问题。

    【讨论】:

      猜你喜欢
      • 2020-04-16
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 2021-01-06
      • 2019-12-05
      • 1970-01-01
      相关资源
      最近更新 更多