我正在使用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();
});
或者我在这里丢失了一些东西。整天都在挣扎。有什么想法吗?
答案 0 :(得分:0)
好的,我已经知道发生了什么事。调用了RequestServiceProvider,但之后Dingo也正在运行LumenServiceProvider,但Validator存在问题,显示在这里
https://github.com/dingo/api/pull/1654/files
所以我不确定我做对了吗,但这是我的解决方案: 因为Lumen中没有发布内容,而且我无法使其与第三方程序包一起使用,所以我已经将LumenServiceProvider复制到了Provider文件夹中,进行了更改,并且已经在bootstrap / app.php中注册了它。 >
目前可以使用,希望不会出现任何其他问题。