Как перенаправить обратно, если метод validate завершился неудачно с Laravel - PullRequest
0 голосов
/ 08 ноября 2019

Я использую Laravel 6. Я создал форму для вставки собрания и создал метод проверки в контроллере для проверки правильности данных, введенных в БД. К сожалению, когда метод validate терпит неудачу, перенаправление по умолчанию удаляет все поля, которые были скомпилированы пользователем.

Я пытался много раз, но я не могу понять, как сделать в случае сбоя перенаправление назад с предыдущимзначения, заполненные пользователем.

Контроллер:

    {

        $this->validate($request, [
            'participants' => [ 'required', new CheckParticipant() ], 
            'description' => 'required',
            'room' => [ 'required', new CheckRoom() ],
            'date_meeting' => [ 'required', new CheckDateTime() ],
            'start' => [ 'required', new CheckTime() ],
            'end' => 'required',
        ]);

        $meeting = new Meeting();

        $participants = request('participants');
        $meeting->id_participants = implode(';', $participants);

        $meeting->description = request('description');
        $meeting->id_room = request('room');
        $meeting->date = request('date_meeting');
        $meeting->start_hour = request('start');
        $meeting->end_hour = request('end');

        $meeting->save();

        $message_correct = "The meeting has been correctly inserted!";

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

    }

Наконец, если пользователь заполнил, например, имя участника собрания, но метод проверкине удается, я хотел бы, чтобы участник был уже выбран в раскрывающемся меню после перенаправления по умолчанию назад. Кто-то может мне помочь?

Ответы [ 2 ]

3 голосов
/ 08 ноября 2019

По вашему мнению, вы можете использовать функцию old для извлечения данных, полученных в результате предыдущего запроса.

2 голосов
/ 08 ноября 2019

Вместо вызова $this->validate попробуйте это:

$validator = Validator::make($request->all(), [
    'participants' => [ 'required', new CheckParticipant() ], 
    'description' => 'required',
    'room' => [ 'required', new CheckRoom() ],
    'date_meeting' => [ 'required', new CheckDateTime() ],
    'start' => [ 'required', new CheckTime() ],
    'end' => 'required',
]);

if($validator->fails()) {
    return redirect('your/url')
    ->withErrors($validator)
    ->withInput();
}

Затем, по вашему мнению, вы можете получить доступ к старым входам с помощью old('yourValue').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...