【问题标题】:How to show only one error message from Laravel request rules如何仅显示来自 Laravel 请求规则的一条错误消息
【发布时间】:2022-02-23 17:47:16
【问题描述】:
我正在使用 Laravel 请求在我的控制器中验证请求的数据
这是我的请求文件数据
我面临两个挑战
- 首先我无法使用静态函数返回自定义消息
- 当我们使用 errors()->first() 发送控制器验证时,我无法发送单个消息。
默认是这样返回的
但我想要像下面的SS
我可以使用 request 发送第一条消息吗?
【问题讨论】:
标签:
php
laravel
laravel-validation
laravel-request
【解决方案1】:
如果你使用的是 laravel 8 或 9,你可以使用 FormRequest 类的 $stopOnFirstFailure 属性来做到这一点
class UpdateRequest extends FormRequest
{
/**
* Indicates whether validation should stop after the first rule failure.
*
* @var bool
*/
protected $stopOnFirstFailure = false;
//...
}
对于响应渲染,您需要在您的异常处理程序(App/Exceptions/Handler.php)中添加自定义渲染/格式来捕获抛出的验证异常并返回您需要的json格式。
【解决方案2】:
-用于自定义消息
Laravel 文档
customizing-the-error-messages
-用于返回单个错误信息
//In Request
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;
protected function failedValidation(Validator $validator)
{
throw new HttpResponseException(response()->json([
'success' => false,
'message' =>$validator->errors()->first(),
'data' => null,
], 422));
}