Redirect (перенаправление) в Laravel 5

Ромчик
0

laravelДоброго времени суток. В данной статье я опишу такую замечательную функцию Laravel – redirect. Мы рассмотрим перенаправление пользователей на другие страницы или действие (action) с данными, так и без данных. Ну что, приступим…

Очень часто нам приходится перенаправлять пользователя на другую страницу или действие (action), например при неверно введенных данных в форме вернуть пользователя обратно.

Простое перенаправление

Например нам надо перенаправить пользователя на страницу page, http://website.loc/page

	return redirect('page');

Или перенаправим пользователя на страницу авторизации http://website.loc/auth/login

	return redirect('auth/login');

Перенаправление на предыдущую страницу

Например, пользователь ввел неверные данные в форму и отправил форму. После проверки мы выявили ошибки и нам необходимо перенаправить пользователя обратно на эту форму:

	return redirect()->back();

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

Как в примере приведенном выше, при неверно введенных данных мы хотим перенаправить пользователя обратно на форму, но при этом вывести сообщение «Неверно введены данные»

	return redirect()->back()->with('message','Неверно введены данные');

А в самом представлении (view) формы поймать это сообщение при помощи сессии:

	@if(Session::has('message'))
		{{Session::get('message')}}
	@endif

Мы можем применять несколько методов with(), например:

	return redirect()->back()->with('message','Неверно введены данные')->with('message2','Повторите
ввод данных');

Но удобней в этом случае использовать массив:

	$mess = ['message'=>'Неверно введены данные','message2'=>'Повторите ввод данных';
	return redirect()->back()->with($mess);

Если мы перенаправляем пользователя обратно на форму, то мы можем перенаправить со старыми значениями для этого используем метод withInput()

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

А данные в форме мы можем получить данные используя функцию old(‘key’).

Перенаправление на именованный роут.

Например у нас есть именованный роут:

	Route::get('page',['as' => 'showPage', 'uses' => 'PageController@show' ]);

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

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

Данный способ очень удобен. Если в дальнейшем мы захотим изменить структуру URL, то нам необходимо только подкорректировать файл route.php.

Если роут содержит параметр или группу параметров:

	Route::get('page/{title}',['as'=>'showPage', 'uses'=>'PageController@show' ]);

или

	Route::get('page/{category}/{title}',['as'=>'showPage', 'uses'=>'PageController@show' ]);

То мы можем использовать редирект на именованный роут:

	return redirect()->route('showPage','Название статьи');

или соответственно

	return redirect()->route('showPage',['category'=>'Категория', 'title'=>'Название статьи']);

Редирект на контролер и действие

Иногда необходимо перенаправить пользователя на конкретный метод контролера не используя URL. Для этого мы можем использовать полный путь к методу:

	return redirect()->action('App\Http\Controllers\PageController@show');

Также мы можем передать параметры, просто добавив их в массив:

	return redirect()->action('App\Http\Controllers\PageController@show',['category','title']);

Ну вот и все.

Понравилась статья? Поделись с друзьями.
  • Add to favorites
  • Добавить ВКонтакте заметку об этой странице
  • Twitter
  • Facebook
  • Мой Мир
  • LiveJournal
  • Одноклассники
  • Блог Я.ру
  • MySpace
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • Reddit
  • StumbleUpon
  • Technorati
  • del.icio.us
  • БобрДобр
  • LinkedIn
  • Memori.ru
  • Сто закладок
  • Blogger

©2012-2020 По всем вопросам обращайтесь через форму обратной связиПолитика конфиденциальности

Яндекс.Метрика