方法requestClass :: validate不存在。如何呼叫合适的提供商?

时间:2019-05-09 19:56:44

标签: validation request lumen

我正在使用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();
        });

,我认为这应该使用我所拥有的Pearls RequestServiceProvider。

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

或者我在这里丢失了一些东西。整天都在挣扎。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好的,我已经知道发生了什么事。调用了RequestServiceProvider,但之后Dingo也正在运行LumenServiceProvider,但Validator存在问题,显示在这里

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

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

目前可以使用,希望不会出现任何其他问题。