【问题标题】:How throw exception when laravel form request failed?laravel 表单请求失败时如何抛出异常?
【发布时间】:2021-09-02 11:01:09
【问题描述】:

我使用 Laravel-Form-Request 并且有两个问题:

1- 当我创建表单请求时,要从控制器验证它,我不能使用

$request->validated()

当我使用它时,错误提示:Call to a member function validated() on null

当我使用时

$request->validate()

没有问题。但是在Laravel Document 中说使用validated()。那么问题出在哪里?

2- 正如我所说,我使用validate() 并且当一切(规则)正常时继续,但当匹配规则出现问题时,只需重定向到当前页面,但我想抛出异常。我该如何定义??

【问题讨论】:

    标签: laravel laravel-formrequest


    【解决方案1】:

    当您想要检索已验证的请求正文内容而不是验证请求时,您可以使用$request->validated。执行请求验证总是validate方法

    $rules = [];
    
    $validator = Validator::make($request->all(), $rules);
    
    if($validator->passes()){
        // here you will get all validated data
        $request_data = $request->validated();
    }
    

    如果你想抛出一个异常,你在 Illuminate\Support\Facades\Validator Facade 上有 fails 方法,所以你想检查验证是否失败并像这样抛出异常

    if($validator->fails())}{
        throw new ThrowANewExceptionHere("Exception Message");
    }
    

    【讨论】:

    • 感谢您的回答,那么我该如何抛出异常,例如当failed validation from form-request 时出现 4xx 错误?
    • 你可以调用abort(XXX),它会返回相应的laravel错误页面或者自定义的
    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 2023-01-22
    • 2021-09-03
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    相关资源
    最近更新 更多