Маршрутизація, 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

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