【发布时间】:2021-11-13 05:14:17
【问题描述】:
我环顾四周,但在使用 Laravel 8 FormRequest 类验证传入请求之前,我无法找到一种方法来执行资源的存在性检查。
基本上,例如,当一个 PUT/PATCH 请求用于更新资源时,我想执行以下步骤:
- 检查请求的资源是否存在
- 检查用户是否有权进行更新
- 验证请求的字段
- 更新资源
- 将响应发回给用户
根据我的阅读,在 FormRequest 中执行第 2 步和第 3 步很容易,而第 4 和第 5 步可以在控制器中完成(或在服务中执行 4 步,在控制器中执行 5 步)。
我缺少的是如何从一开始就执行第 1 步。我已经看到了一些解决方法,例如 How to throw a 404 in Laravel Form Request with custom Rule 可能与 How to validate Route Parameters in Laravel 5? 并列,但我认为这不是实现我想做的事情的正确方法......
通过 Controller 中的存在检查,用户可以首先发出有效请求,即使他试图更新不存在的资源(因为框架在调用 Controller 方法之前抛出 ValidationException)并且听起来不对。
关于如何在存在检查后“延迟”验证有什么建议吗?否则,我应该完全放弃使用 FormRequests 吗?
提前致谢!
【问题讨论】:
标签: php laravel laravel-8 laravel-formrequest