Как перенаправить после сбоя метода проверки в Laravel

Я использую 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). Есть ли способ перенаправить ошибки в домашнем представлении, если отправка не удалась?


person Michele Della Mea    schedule 22.10.2019    source источник


Ответы (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); 
    }
person Thamer    schedule 22.10.2019