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

Класс RedirectResponse

Класс RedirectResponse является реализацией HTTP-ответа с кодом перенаправления. Он используется для создания редиректов на различные URL-адреса, включая маршруты, именованные маршруты, внешние URL и предыдущий URL. Класс предоставляет методы для передачи данных в сессию, flash-сообщений и параметров запроса.

Объект класса возвращается при использовании глобальной функции redirect или фасада Route с методом redirect. Первым параметром может быть строка с URL, именованный маршрут или действие контроллера. Вторым параметром - HTTP-статус (по умолчанию 302).

Синтаксис

<?php use Illuminate\Http\RedirectResponse; // Базовый редирект redirect($to, $status = 302, $headers = [], $secure = null): RedirectResponse // Редирект на именованный маршрут redirect()->route($route, $parameters = [], $status = 302, $headers = []): RedirectResponse // Редирект с сохранением данных redirect()->with($key, $value): RedirectResponse // Редирект с сохранением ввода redirect()->withInput(): RedirectResponse ?>

Пример

Давайте создадим редирект на главную страницу:

<?php use Illuminate\Support\Facades\Route; Route::get('/', function () { return redirect('/home'); }); ?>

Пример

Выполним редирект на именованный маршрут с параметрами:

<?php use Illuminate\Support\Facades\Route; Route::get('/user/{id}', function ($id) { return view('user.profile', ['id' => $id]); })->name('user.profile'); Route::get('/redirect-user', function () { return redirect()->route('user.profile', ['id' => 5]); }); ?>

Результат выполнения кода при переходе по URL '/redirect-user':

"Перенаправление на /user/5"

Пример

Вернём пользователя на предыдущую страницу с сохранением ввода:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Http\RedirectResponse; class UserController extends Controller { public function store(Request $request): RedirectResponse { $validated = $request->validate([ 'name' => 'required|string', 'email' => 'required|email' ]); // Сохраняем данные пользователя // ... if ($someError) { return back()->withInput()->withErrors(['error' => 'Ошибка сохранения']); } return redirect()->route('users.index')->with('success', 'User created'); } } ?>

Пример

Выполним редирект с flash-сообщением в сессию:

<?php use Illuminate\Support\Facades\Route; Route::post('/login', function () { // Проверка авторизации // ... return redirect('/dashboard')->with('status', 'Добро пожаловать!'); }); ?>

Пример

Создадим редирект на внешний URL:

<?php use Illuminate\Support\Facades\Route; Route::get('/external', function () { return redirect()->away('https://example.com'); }); ?>

Результат выполнения кода:

"Перенаправление на https://example.com"

Пример

Используем редирект с передачей нескольких flash-сообщений:

<?php namespace App\Http\Controllers; use Illuminate\Http\RedirectResponse; class ProfileController extends Controller { public function update(Request $request): RedirectResponse { $user = auth()->user(); $user->update($request->only(['name', 'email'])); return redirect() ->route('profile.edit') ->with('success', 'Profile updated') ->with('info', 'Check your email for confirmation'); } } ?>

Пример

Выполним редирект с добавлением параметров в URL:

<?php use Illuminate\Support\Facades\Route; Route::get('/search', function (Request $request) { $query = $request->input('q'); if (empty($query)) { return redirect('/search')->withQuery([ 'q' => 'default', 'sort' => 'desc' ]); } return view('search.results', ['query' => $query]); }); ?>

Смотрите также

  • класс Response,
    который представляет базовый HTTP-ответ
  • функция redirect,
    которая создаёт экземпляр редиректа
  • метод with,
    который добавляет flash-данные в сессию
  • метод away,
    который выполняет редирект на внешний URL
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить