РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pplrSpRdBk 12 of 210 menu

Редирект на предыдущую страницу в Laravel

Часто после обработки запроса нужно вернуть пользователя туда, откуда он пришёл. Удобный пример - удаление: пользователь смотрит список постов (или страницу одного поста), жмёт ссылку «удалить», сервер удаляет запись и сразу отправляет его обратно на ту же страницу, а не на какой-то жёстко прописанный URL.

«Назад» здесь - это не кнопка браузера и не адрес вроде /posts, зашитый в код. Laravel берёт URL предыдущей страницы из заголовка Referer (или из сессии) - то есть ту страницу, с которой пользователь перешёл по ссылке удаления. Если он был на списке - вернётся на список; если на карточке поста - на карточку (или туда, откуда реально пришёл запрос).

Так одно и то же действие удаления может вызываться с разных страниц и всегда вернёт пользователя туда, откуда он пришёл.

Пусть в списке постов есть ссылка на удаление:

@foreach ($posts as $post) <div> {{ $post->title }} <a href="/post/{{ $post->id }}/delete"> delete </a> </div> @endforeach

Маршрут:

<?php Route::get('/post/{id}/delete', [PostController::class, 'destroy']); ?>

В контроллере удаляем пост и делаем редирект назад:

<?php namespace App\Http\Controllers; use App\Models\Post; class PostController extends Controller { public function destroy($id) { $post = Post::findOrFail($id); $post->delete(); return redirect()->back(); } } ?>

Существует короткий вариант через хелпер:

<?php namespace App\Http\Controllers; use App\Models\Post; class PostController extends Controller { public function destroy($id) { $post = Post::findOrFail($id); $post->delete(); return back(); // короткий вариант } } ?>

Оба варианта делают одно и то же: после удаления отправляют пользователя на предыдущую страницу.

Сделайте список постов со ссылкой удаления у каждого. По ссылке удалите пост и верните пользователя назад через redirect()->back().

Перепишите тот же редирект через хелпер back().

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить