MyTetra Share
Делитесь знаниями!
Генерация URL в Laravel: роутинг, редирект и их использование
20.06.2019
18:52
Автор: xintrea
Текстовые метки: php, laravel, route, redirect, url, роут, маршрут, редирект
Раздел: Компьютер - Программирование - Язык PHP - Laravel

Как получить URL для именованного роута


В файле маршрутов web.php часто прописывают именованные маршруты. Для задания имени маршруту используется метод name(). Например:


Route::get( '/holdObjects/list', 'HoldObjectController@list')->name('holdObjectsList');


Чтобы получить URL, соответствующий такой записи, можно воспользоваться функцией route():


route( 'holdObjectsList' )


Если в маршруте присутсвует параметр, например идентификатор, его можно указывать как второй параметр функции route(), например:


Route::get( '/holdObjects/show/{id}', 'HoldObjectController@show')->name('holdObjectsShow');


...


route( 'holdObjectsShow', 5 )


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


Route::get( '/holdObjects/show/{id}/style/{mode}', 'HoldObjectController@showStyle')->name('holdObjectsShowStyle');


...


route( 'holdObjectsShow', ['id'=>5, 'mode'=>'normal'] )


(Требуется проверка)



Редирект на именованный роут


Для осуществления редиректа на URL, соответствующий именованному маршруту, можно пользоваться конструкцией:


redirect()->route( 'userHoldObjectShow', [ 'id'=> $holdObjectId] );


Здесь userHoldObjectShow - это имя маршрута, заданного через метод name(). А в квадратных скобках - это параметры.


Эту конструкцию может возвращать любой метод контроллера, и в результате браузер будет делать переход на нужную страницу. Это самый простой способ, позволяющий PHP-коду направлять браузер на нужный URL.



Получение URL предыдущей страницы


Начиная с Laravel 5.1, получить URL предыдущей посещенной страницы можно с помощью команды:


url()->previous()



Получение URL, на который будет переводиться редирект


Иногда нужно узнать, какой URL будет открыт при редиректе. Это можно сделать с помощью метода getTargetUrl(), вот так:


redirect()->back()->getTargetUrl()


Эта конструкция вернет URL предыдущенй посещенной страницы.



Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования