Маршрутизація, Laravel по-українськи

Найпростіша маршрутизація

Більшість маршрутів (routes) вашої програми буде визначено у файлі app/routes.php. У Laravel, найпростіший маршрут складається з URI (шляху) та функції-замикання.

Найпростіший GET -маршрут

Найпростіший POST -маршрут

Реєстрація маршруту для декількох типів запитів

Реєстрація маршруту для будь-якого типу HTTP-запиту

Реєстрація маршруту, що завжди працює через HTTPS

Вам часто може знадобитися згенерувати URL-адресу до якого-небудь маршруту - для цього використовується метод PHP URL :: to () :

Параметри маршрутів

Необов'язкові параметри маршруту

Необов'язкові параметри за промовчанням

Маршрути з відповідністю шляху до регулярного вираження

Передача масиву PHP where -обмеження

Звичайно, за потреби ви можете передати масив обмежень (constraints):

Реєстрація глобальних шаблонів

Якщо ви хочете, щоб параметр завжди був обмежений заданим регулярним виразом, то можете використовувати метод pattern :

Доступ до значення параметра маршруту

Якщо вам потрібен доступ до значення параметра маршруту ззовні, ви можете використовувати метод PHP Route :: input () :

Фільтри маршрутів

Реєстрація фільтра маршрутів

Якщо фільтр повертає значення, воно використовується як відповідь на сам запит і обробник маршруту не буде викликаний, і всіafter -фільтри також будуть пропущені.

Прив'язка фільтра до маршруту

Прив'язка фільтра до дії контролера

Прив'язка кількох фільтрів до маршруту

Прив'язка кількох фільтрів у вигляді масиву

Передачапараметрів для фільтра

Фільтри типуafter (виконуються після запиту, якщо він не був скасований фільтромbefore — прим. пров.) отримують PHP $response як свій третій аргумент:

Фільтри за шаблоном

Ви також можете вказати, що фільтр застосовується до всіх маршрутів, URI (шлях) яких відповідає шаблону.

Ви також можете прив'язувати фільтри, що залежать від типу запиту HTTP:

Класи фільтрів

Для просунутої фільтрації можна використовувати класи замість замикань. Так як фільтри створюються за допомогою IoC-контейнера, ви можете покластися на його впровадження залежностей для кращого тестування.

Реєстрація фільтра-класу

За замовчуванням буде викликано метод PHP filter () на клас PHP FooFilter :

Якщо ви не хочете використовувати метод PHP filter (), просто вкажіть інший метод:

Іменовані маршрути

Також можна вказати контролер та його дію:

Отримати ім'я поточного маршруту можна методом PHP currentRouteName () :

Групи маршрутів

Іноді вам може знадобитися застосувати фільтри до набору маршрутів. Замість того, щоб вказувати їх для кожного маршруту окремо, ви можете згрупувати маршрути:

Ви також можете використовувати параметр PHP namespace для масиву PHP group , щоб вказати, що всі контролери цієї групи знаходяться в даному просторі імен:

Доменна маршрутизація

Маршрути Laravel здатні працювати з піддоменами по їх масці і передавати у ваш обробник параметри з шаблону.

Реєстрація маршруту за піддоменом

Префікс шляху

Група маршрутів може бути зареєстрована з одним префіксом без його явної вказівки за допомогою ключаprefix у параметрах групи:

Прив'язка моделей

Прив'язка моделей – зручний спосіб передачі екземплярів моделей у ваш маршрут. Наприклад, замість передачі ID користувача ви можете передати модель PHP User , яка відповідає цьому ID, повністю. Для початку використовуйте метод PHP Route::model() для вказівки моделі, яка повинна бути використана замість даного параметра.

Прив'язка параметра до моделі

Потім зареєструйте маршрут, який приймає параметр :

Через те, що ми раніше прив'язали параметр до моделі PHP User, її екземпляр буде передано в маршрут. Таким чином, наприклад, запит profile/1 передасть об'єкт PHP User, який відповідає ID 1 (отриманому з БД - прим. Пров.).

Увага: якщо переданий ID не відповідає рядку в БД буде порушеновиключення 404.

Якщо ви хочете задати свій власний оброблювач для події «не знайдено» , ви можете передати функцію-замикання метод PHP model () :

Іноді вам потрібно використовувати свій метод для отримання моделі перед її передачею в маршрут. В цьому випадку просто використовуйте метод PHP Route :: bind() :

Помилки 404

Є два способи викликати виняток 404 (Not Found) із маршруту. Перший - методом PHP App :: abort () :

Другий - порушивши виняток класу або нащадка класу PHP Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException .

Більше інформації про те, як обробляти винятки 404 та надсилати власну відповідь на такий запит, міститься в розділі про помилки.

Маршрутизація до контролера

Laravel дозволяє вам реєструвати маршрути не тільки у вигляді функції-замикання, а й класів-контролерів і навіть створювати контролери ресурсів.

Більше інформації міститься в розділіконтролерів.

Коментарі (5)

маршрутизація

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException

laravel

Ви створили POST-маршрут, але, напевно, намагаєтеся його відкрити через браузер просто як GET. Для цього потрібно створити окремий GET-маршрут або використовувати PHP any().