{{TOC}} Сегодня мы рассмотрим возможности работы с маршрутами в Laravel. На этот раз, мы будем иметь дело с тем, как Laravel обрабатывает **параметры маршрутов**. Мы уже познакомились с ((http://scotch.io/tutorials/simple-and-easy-laravel-routing==маршрутизацией)) раньше и в этот раз рассмотрим более сложные сценарии. ==Параметры пути== Laravel позволяет использовать параметры в наших URL. Это полезно, когда вы хотите создать путь с такими вещами, как **подкатегория** или определенный **идентификатор** (имя, id или любой другой параметр). Давайте рассмотрим различные способы использования таких параметров. ===Получение базового параметра пути=== В этом примере у нас будет маршрут для пользователей и мы будем получать из него идентификатор. Мы сделаем это двумя разными способами для имени и для идентификатора. %% // получение уровня привлекательности щенка Route::get('puppies/{cutelevel}', function($cutelevel) { return 'Этот щенок мил на ' . $cutelevel . ' из ' . $cutelevel; }); // ИЛИ // получения имени Route::get('users/{name}', function($name) { return 'Имя пользователя - ' . $name; }); %% //Проверка уровня привлекательности//: если теперь перейти по адресу %%(t)http://example.com/puppies/5%%, в браузере отобразится **Этот щенок мил на 5 из 5**. //Проверка имени//: если перейти по адресу %%(t)http://example.com/users/chris%%, в браузере отобразится **Имя пользователя - Chris**. ===Использование необязательных параметров=== Для этого примера допустим, что у нас есть галерея фотографий. У нас также есть категории фотографий. Категория будет указываться в пути, иначе мы просто будем показывать все фотографии. %% // указываемая категория Route::get('gallery/{category?}', function($category) { // если категория задана, показываем её // если нет, показываем всё if ($category) return 'Это ' . $category . ' раздел.'; else return 'Это все фотографии.'; }); %% //Проверка с указанием категории//: если зайти на %%(t)http://example.com/gallery/puppies%%, браузер покажет **Это puppies раздел.** //Проверка без указания категории//: если зайти на %%(t)http://example.com/gallery%%, браузер покажет **Это все фотографии.** ==Параметры пути по умолчанию== Допустим, вы хотите, чтобы для пользователя всегда была выбрана категория. Тогда, если категория не выбрана, то по умолчанию будет автоматически выбираться, например, **закаты**. %% // указываемая категория со значением по умолчанию Route::get('gallery/{category?}', function($category = 'sunsets') { return 'Это категория ' . $category; }); %% //Проверяем без категории//: если зайти на %%(t)http://example.com/gallery%%, браузер покажет **Это категория закаты.** //Проверяем с категорией//: если зайти на %%(t)http://example.com/gallery/puppies%%, браузер покажет **Это категория puppies.** ==Получение реальных данных== Итак, мы узнали основы параметров путей. Давайте поговорим об использовании их в реальной ситуации. Мы будем использовать **пример галереи**. В реальности вы не захотите просто отображать сообщение, что пользователь видит категорию щенков (puppies). **Ваш пользователь захочет увидеть этих щенков!** Допустим, вы уже настроили ваше приложение Laravel, миграции и базу данных. Мы можем использовать Eloquent для получения данных через параметры нашего пути. Когда у вас уже есть модель Eloquent, вы можете запрашивать необходимую информацию из пути (конечно, ваше приложение будет становиться больше и вы захотите переместить эту логику в контроллер). %% // получение категории галереи для просмотра Route::get('gallery/{category?}', function($category) { // получение содержимого галереи по категории $gallery = Gallery::where('category', '=', $category); // возвращение представления и отсылка в него данных галереи return View::make('gallery') ->with('gallery', $gallery); }); %% ==Заключение== Как видите, очень просто использовать параметры пути и Eloquent ORM для получения реальных данных и отправки их в шаблоны. Смотрите также документацию о ((док4:routing#фильтр+ы))ах для аутентификации и ((док4:routing#группы==группах путей)) в качестве префикса для всех путей, а также ((док4:routing#параметры раздел о параметрах маршрутов)), чтобы делать больше таких вещей, как ограничения путей с использованием регулярных выражений и многие другие.