Может войдёшь?
Черновики Написать статью Профиль

Переадресации

перевод документация 5.х

  1. 1. Создание переадресаций
  2. 2. Переадресация на именованные маршруты
  3. 3. Переадресация на действия контроллера
  4. 4. Переадресация с данными сессии
Этот перевод актуален для англоязычной документации на (ветка 5.3). Опечатка? Выдели и нажми Ctrl+Enter.

Создание переадресаций

Отклики для переадресации — это экземпляры класса PHPIlluminate\Http\RedirectResponse, они содержат соответствующие заголовки, необходимые для переадресации пользователя на другой URL. Есть несколько способов создания экземпляров PHPRedirectResponse. Простейший способ — использовать глобальную вспомогательную функцию PHPredirect():

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

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

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

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

Переадресация на именованные маршруты

При вызове вспомогательной функции PHPredirect() без параметров возвращается экземпляр PHPIlluminate\Routing\Redirector, позволяя вам вызывать любой метод на экземпляре PHPRedirector. Например, чтобы создать PHPRedirectResponse на именованный маршрут, вы можете использовать метод PHProute():

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

Если у вашего маршрута есть параметры, то вы можете передать их в качестве второго аргумента метода PHProute():

PHP
// Для маршрута со следующим URI: profile/{id}

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

Получение параметров из моделей Eloquent

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

PHP
// Для маршрута со следующим URI: profile/{id}

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

Если вы хотите изменить значение, которое помещается в параметр маршрута, вам надо переопределить метод PHPgetRouteKey() в вашей модели Eloquent:

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

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

Также вы можете создать переадресацию на действия контроллера. Для этого передайте контроллер и имя действия в метод PHPaction(). Обратите внимание: вам не надо указывать полное пространство имён контроллера, потому что PHPRouteServiceProvider задаст его сам:

PHP
return redirect()->action('HomeController@index');

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

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

Переадресация с данными сессии

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

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

  
return redirect('dashboard')->with('status''Профиль изменён!');
});

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

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

Как вы считаете, полезен ли этот материал? Да Нет

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.