【问题标题】:How to redirect after validate method fails in Laravel在 Laravel 中验证方法失败后如何重定向
【发布时间】:2019-10-22 22:48:21
【问题描述】:

我正在使用 Laravel 6,并且我创建了一个表单来将新用户插入到我的数据库中。如果验证器失败,我想更改重定向方法的路由。我尝试了很多次,但是当验证器失败时,我总是在当前视图 (adminArea.blade.php) 中看到错误,而不是在主视图 (home.blade.php) 中。

public function insert_user(Request $request)
{
    $this->validate($request, [
        'name' => 'required',
        'surname' => 'required',
        'email' => 'required|email|unique:users',
        'pwd' => 'required',
        'permission' => 'required',
    ]);

    if ($validator->fails()) {
        return redirect()->route('home')->withErrors($validator);
    }

    $user = new User();
    $user->name = request('name');
    $user->surname = request('surname');
    $user->email = request('email');
    $user->password = Hash::make(request('pwd'));
    $user->permission = request('permission');
    $user->save();

    $message_correct = request('name')." ".request('surname')." has been correctly inserted!";

    return redirect()->route('home')->with('success', $message_correct);
}

目前,表单提交正常,并正确重定向到主视图。但是,如果提交失败,它会保留在同一页面上 (adminArea.blade.php)。如果提交失败,有没有办法重定向主页视图中的错误?

【问题讨论】:

    标签: php validation laravel-6


    【解决方案1】:

    正如我在您的验证中看到的,您正在使用Illuminate\Foundation\Validation\ValidatesRequests@validate 方法来验证您的数据,这样您应该使用try catch 块来捕获验证失败时抛出的ValidationException

    我建议你使用Validator,所以你的方法如下:

    use Illuminate\Support\Facades\Validator
    
    public function insert_user(Request $request)
        {
            $validator = Validator::make($request, [
                'name' => 'required',
                'surname' => 'required',
                'email' => 'required|email|unique:users',
                'pwd' => 'required',
                'permission' => 'required',
            ]);
    
            if($validator->fails()) {
                return redirect()->route('home')->withErrors($validator);
            }
            $user = new User();
            $user->name = request('name');
            $user->surname = request('surname');
            $user->email = request('email');
            $user->password = Hash::make(request('pwd'));
            $user->permission = request('permission');
            $user->save();
            $message_correct = request('name') . " " . request('surname') . " has been correctly inserted!";   
            return redirect()->route('home')->with('success', $message_correct); 
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-03
      • 2018-06-13
      • 2017-08-17
      • 2016-01-23
      • 2013-11-05
      • 1970-01-01
      相关资源
      最近更新 更多