laravel5 以上requestForm校验异常如何自定义

  1. 我想知道如何去自定义返回异常,同时也想知道异常在框架中该如何使用
阅读 4.3k
2 个回答

表单验证内容文档有。
自定义返回异常在app\Exceptions\Handler.php里。
表单验证抛出的是ValidationException,修改render方法里:

public function render($request, Exception $exception) {
    //其他异常...

    //自定义表单验证异常
    if ($exception instanceof ValidationException) {
        return $this->handleValidationExceptionToResponse($exception, $request);
    }
    //...
}

然后写你自己处理异常的逻辑:

//自定义返回异常消息
protected function handleValidationExceptionToResponse(ValidationException $e, $request) {
    $errors = $e->validator->errors()->getMessages();
    $errorMsg = implode('',array_merge(...array_values($errors)));
    //自定义异常返回json
    return response()->json(['errcode' => 1111, 'errmsg' => $errorMsg], 422);
}

你说的校验异常,不知道是不是表单校验的功能。可以参照我这篇博客的第二部分

表单校验中可以设置rules对需要的字段进行校验,还可以自定义规则,校验返回信息可以用messages函数返回,在前台捕获errors变量即可。

public function rules()
{
    return [
        "game_id" => 'required',
        "guild_id" => 'required',
        "desc" => 'required',
        "date" => 'required',
        "field_id" => 'required'
    ];
}

public function messages(){
    return [
        'desc.required' => "请填写赛事描述",
        'date.required' => "请选择赛事日期",
        'field_id.required' => "请选择赛场"
    ];
}
@if ($errors->any())
    @foreach ($errors->all() as $error)
        FoxUI.alert("{{$error}}", '错误');
    @endforeach
@endif
推荐问题
宣传栏