Laravel 8: как перенаправить пользователя после процесса обновления

Я работаю с Laravel 8 над развитием своего проекта форума, и в настоящее время я создал страницу, на которой пользователи могут редактировать свои ответы. Вот форма:

   <form action="{{ route('update.answer', [$anss->id, $que->id]) }}" method="POST">
        @csrf
        <textarea name="answer" id="answer" class="form-control" rows="7">{{ $ans->answer }}</textarea>
        @error('answer')
            <div class="text-red-500 mt-2 text-sm">
                {{ $message }}
            </div>
        @enderror
        <button type="submit" class="text-blue-500 BJadidBold">Update</button>
    </form>

И затем в методе Controller я добавил это:

public function updateAnswer(Answer $anss, Question $que)
    {
        $validate_data = Validator::make(request()->all(),[
           'answer' => 'required'
        ])->validated();

        $answer = Answer::findOrFail($anss);
        $answer->update($validate_data);
    }

И вот маршрут для этого:

Route::post('questions/{anss}/{que}' , [QuestionController::class, 'updateAnswer'])->name('update.answer');

Теперь я хочу перенаправить пользователя на такой URL-адрес:

http://localhost:8000/questions/question-slug-example

Однако с помощью этого кода пользователь будет перенаправлен на этот URL-адрес:

http://localhost:8000/questions/answer_id_example/question-slug-example

Итак, как я могу сделать это правильно?

Я был бы очень признателен, если бы вы поделились со мной своей идеей или предложением по этому поводу...

Спасибо.


person tejoslaeslio    schedule 10.03.2021    source источник
comment
проверьте документацию laravel.com/docs/8.x/routing#redirect-routes   -  person Mahbubul Islam    schedule 10.03.2021


Ответы (4)


Поскольку $que держит вашего слага, вы можете написать:

return redirect('questions/' . $que);

person POOYAA    schedule 10.03.2021

Вы не можете перенаправить на маршрут типа POST. Он должен быть типа GET. Для перенаправления вы можете использовать:

return redirect('/questions/example/example');
person Santiago Curvello    schedule 10.03.2021
comment
Я не говорил, что хочу перенаправить на метод POST. Этот маршрут, который включен в вопрос, предназначен для обновления - person tejoslaeslio; 10.03.2021
comment
Извините, я понял, что вы хотели перенаправить на этот маршрут. В любом случае, вы можете использовать «обратное перенаправление» для перенаправления. - person Santiago Curvello; 10.03.2021

Если ваш тип маршрута get и его именованный маршрут, вы можете перенаправить следующим образом

return redirect()->route('route_name')->with(['data' => $data]);

Если ваш тип маршрута get и вы не указали имя своего маршрута, тогда

return redirect('/any_route_url_defined_in_web.php')->with(['data' => $data]);
person sandip bharadva    schedule 10.03.2021

После завершения процесса обновления вы можете использовать этот код для перенаправления пользователя.

return redirect('redirect url')
person abofazl rasoli    schedule 10.03.2021