我环顾四周,但在使用 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 吗?
提前致谢!