После установки фрэймворка, определения настроек сервера и приложения, пришло время заняться разработкой.
Решение любой задачи в клиент-серверном приложении построенного в соответсвии с архитектурой MVC (HMVC) начинается с определения маршрута, прослушивающего определенный тип запроса: get, post, put и другие. Маршрут определяется в маршрутизаторе (routes), главная задача которого перенаправить запрос в нужный контроллер.
Маршруты определяются в файле routes/web.php
Простейший маршрут, перехватывающий get-запросы на главную страницу приложения выглядит так:
Route::get('/', function() { return 'Hello World'; });
Для перехвата POST-данных можно воспользоваться методом Route::post
Route::post('foo/bar', function() { return 'Hello World'; });
Метод Route::any перехватывает и POSTи GET данные.
Route::any('foo', function() { return 'Hello World'; });
Для перехвата маршрутов только по протоколу HTTPS, вторым входящим параметром можно передать не функцию, а массив, первым элементом которого является тип протокола, а вторым – функция.
Route::get('foo', array('https', function() { return 'Must be over HTTPS'; }));
Для добавления параметров маршрута, можем воспользоваться диррективой фигурных скопок. Рассмотрим добавление к маршруту обязательного параметра id.
Route::get('user/{id}', function($id) { return 'User '.$id; });
Добавление к маршруту необязательного параметра name.
Route::get('user/{name?}', function($name = null) { return $name; });
Вместо $name = null можно использовать любое значение по умолчанию.
Использование регулярных выражений в маршрутах.
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() { // }));
Вместо collback-функций, маршруты могут ссылаться на экшны контроллера:
Route::get('static', 'StaticController@index');
, где StaticController - имя контроллера (файл StaticController из папки app/http/controllers), а index - имя эшкна (или функции класса StaticController)