Идёт обновление сайта. Несколько дней возможны сбои в оформлении и переводах. Документация работает — если страница выглядит сломанной, обновите её позже.

Документация
L Laravel L intervention/image
Войти
Главная Laravel 10.x HTTP-перенаправления

HTTP-перенаправления

10.x 7 мар 2026 г.

#Создание перенаправлений

Ответы с перенаправлением являются экземплярами класса Illuminate\Http\RedirectResponse и содержат необходимые заголовки для перенаправления пользователя на другой URL. Существует несколько способов создать экземпляр RedirectResponse. Самый простой — использовать глобальный хелпер redirect:

Route::get('/dashboard', function () {
    return redirect('/home/dashboard');
});

Иногда нужно перенаправить пользователя обратно на предыдущую страницу, например, если отправленная форма содержит ошибки. Для этого можно использовать глобальную функцию back. Поскольку эта функция использует сессию, убедитесь, что маршрут, вызывающий back, использует группу middleware web или содержит все необходимые middleware для работы с сессией:

Route::post('/user/profile', function () {
    // Проверить запрос...

    return back()->withInput();
});

#Перенаправление на именованные маршруты

Когда вы вызываете хелпер redirect без параметров, возвращается экземпляр Illuminate\Routing\Redirector, позволяющий вызывать любые методы на экземпляре Redirector. Например, чтобы сгенерировать RedirectResponse к именованному маршруту, можно использовать метод route:

return redirect()->route('login');

Если маршрут принимает параметры, их можно передать вторым аргументом методу route:

// Для маршрута с URI: profile/{id}

return redirect()->route('profile', ['id' => 1]);

Для удобства Laravel также предоставляет глобальную функцию to_route:

return to_route('profile', ['id' => 1]);

#Заполнение параметров через модели Eloquent

Если вы перенаправляете на маршрут с параметром "ID", который заполняется из модели Eloquent, можно передать саму модель. ID будет извлечён автоматически:

// Для маршрута с URI: profile/{id}

return redirect()->route('profile', [$user]);

Если нужно настроить значение, которое будет подставлено в параметр маршрута, переопределите метод getRouteKey в вашей модели Eloquent:

/**
 * Получить значение ключа маршрута модели.
 */
public function getRouteKey(): mixed
{
    return $this->slug;
}

#Перенаправление на действия контроллеров

Вы также можете создавать перенаправления на действия контроллеров. Для этого передайте контроллер и имя действия в метод action:

use App\Http\Controllers\HomeController;

return redirect()->action([HomeController::class, 'index']);

Если маршрут контроллера требует параметры, передайте их вторым аргументом методу action:

return redirect()->action(
    [UserController::class, 'profile'], ['id' => 1]
);

#Перенаправление с временными данными сессии

Перенаправление на новый URL и временное сохранение данных в сессии обычно выполняются одновременно. Обычно это делается после успешного действия, когда в сессию записывается сообщение об успехе. Для удобства можно создать экземпляр RedirectResponse и записать данные в сессию в одной цепочке методов:

Route::post('/user/profile', function () {
    // Обновить профиль пользователя...

    return redirect('/dashboard')->with('status', 'Профиль обновлён!');
});

Вы можете использовать метод withInput, предоставляемый экземпляром RedirectResponse, чтобы временно сохранить данные текущего запроса в сессии перед перенаправлением пользователя. После этого данные можно легко получить в следующем запросе:

return back()->withInput();

После перенаправления можно вывести временное сообщение из сессии. Например, с помощью синтаксиса Blade:

@if (session('status'))
    <div class="alert alert-success">
        {{ session('status') }}
    </div>
@endif