Дисциплины - Серверные технологии разработки

Разработка web-приложения с серверной маршрутизацией - Маршрутизация

Запрос из адресной строки попадает в так называемый обработчик маршрутов, или маршрутизатор, или роутер (routes). Маршрутизатор определяет, какой  контроллер необходимо вызывать.

Маршруты определяются в файле app/routes.php

Простейший get-маршрут.

Route::get('/', function () {

  return 'Hello World';

});

Для перехвата POST-данных можно воспользоваться методом Route::post

Простейший post-маршрут.

Route::post('foo/bar', function () {

  return 'Hello World';

});

Метод Route::any перехватывает и POSTи GET данные.

Маршрут любого http-запроса.

Route::any('foo', function () {

  return 'Hello World';

});

Для перехвата маршрутов только по протоколу HTTPS, вторым входящим параметром можно передать не функцию, а массив, первым элементом которого является тип протокола, а вторым – функция.

Маршрут любого https-запроса.

Route::get('foo', array('https', function() {

  return 'Must be over HTTPS';

}));

Для генерации URL к какому-нибудь маршруту можно воспользоваться методом URL::to(). Это может пригодится для генерации путей к ссылкам (значение атрибута href), картинкам (src), стилям (href), скриптам(src), обработчику форм (action) либо при переадресации.

Генерация URL к маршруту.

$url = URL::to('foo');

Для этих же целей можно использовать хелпер url

Использование хелпера url.

$url = url('foo');

Параметры маршрутов

Добавление к маршруту обязательного параметра id.

Добавление к маршруту обязательного параметра id.

Route::get('user/{id}', function ($id) {

return 'User '.$id;

});

Добавление к маршруту необязательного параметра name.

Добавление к маршруту необязательного параметра name.

Route::get('user/{name?}', function ($name = null) {

  return $name;

});

Вместо $name = nullможно использовать любое значение по умолчанию.

Добавление к маршруту необязательного параметра name.

Route::get('user/{name?}', function ($name =’Jhon’) {

  return $name;

});

Использование регулярных выражений в маршрутах.

Маршруты с соответствием пути регулярному выражению.

Route::get('user/{name}', function ($name) {

})->where('name', '[A-Za-z]+');

 

Route::get('user/{id}', function ($id) {

})->where('id', '[0-9]+');

Вместо последовательного вызова метода where, можно передать массив ограничений.

Использование массива в регулярных вырражениях.

Route::get('user/{id}/{name}', function ($name) {

})->where(['name'=>'[A-Za-z]+', ‘id’=>'[0-9]+']);

 

Если какие-то регулярные выражения нужно связать со всеми параметрами, то можно использовать метод pattern:

Использование шаблона регулярного выражения.

public function boot(Router $router) {     $router->pattern('id', '[0-9]+');       parent::boot($router); }

Таким образом, будет осуществляться проверка всех параметров с именем id.

Именованные маршруты

Задать имя маршруту можно следующим способом:

Назначение имени текущего исполняемого маршрута.

Route::get('user/profile', array('as' => 'profile', function () {

  //

}));

Также можно задать контроллер и его экшн, который будет выполняется по данному маршруту.

Назначение контроллера и экшна.

Route::get('user/profile', array('as' => 'profile',

'uses' => 'UserController@showProfile'));

Теперь можно использовать имя маршрута при генерации URL либо при перенаправлении.

Генерация URL.

$url = URL::route('profile');

$redirect = Redirect::route('profile');

Получить имя текущего выполняемого маршрута можно методом currentRouteName():

Получить имя текущего исполняемого маршрута.

$name = Route::currentRouteName();

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться
80422 БГУИР
10421-10422 ИИТ БГУИР
10423 БГУИР
20421 БГУИР
30421 БГУИР
30423 БГУИР
Вопросы