Автоматические имена роутов Laravel

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Часто разработчики при создании проектов пренебрегают именованием маршрутов по разным причинам, например, когда они вообще не обращаются к ним используя функцию route(). Это обусловлено архитектурой приложения и в этом нет ничего зазорного, но есть и такие проекты, где имена маршрутов являются неотъемлемой частью проекта и случается так, что не ко всем роутам указываются имена. Об этом мы и поговорим.

В таких проектах можно запросто встретить следующий вид имён:

URI

Route Name

GET /api/short/{key}

short_link

POST /api/review

POST /api/phone/confirm

phone.confirm

POST /api/crm/orders

api.crm.

GET /api/crm/orders/{id}

api.crm.

Как мы видим, в коде проекта используется обращение всего к двум маршрутам из данного списка, или не используется - этот факт не доказан, пока мы сами не найдём использование.

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

Исправить ситуацию поможет пакет dragon-code/laravel-route-names, позволяющий в автоматическом режиме формировать имена маршрутов на основании uri.

Например, вышеприведённые адреса получат следующие имена:

URI

Route Name

GET /api/short/{key}

api.short.show

POST /api/review

api.review.store

POST /api/phone/confirm

api.phone.confirm

POST /api/crm/orders

api.crm.orders.store

GET /api/crm/orders/{id}

api.crm.orders.show

Как мы видим, имена стали осмысленные и автоматически заполненные.

Ещё одной особенностью данного пакета является то, что он совместим со всеми программными решениями по расширению списка маршрутов, например, dragon-code/extended-routes.

Установка и настройка

Основная проблема работы с маршрутами такого уровня во фреймворке Laravel заключается в том, что они инициализируются при старте приложения, и если пытаться заменить корневой Kernel через сервис-провайдеры, то это плохо скажется на производительности, так как сперва будут инициализированы стандартные маршруты, и только после этого будут перезаписаны обработанные. В итоге получим что маршруты инициализируются два раза, чего нам совсем не нужно.

Поэтому мы подменим его на старте приложения, таким образом, сохраним функциональность.

Итак, для начала нужно установить зависимость через Composer:

composer require dragon-code/laravel-route-names

Затем в файле bootstrap/app.php приложения необходимо заменить Illuminate\Foundation\Application на DragonCode\LaravelRouteNames\Application.

И всё

Источник: https://habr.com/ru/post/655497/


Интересные статьи

Интересные статьи

Данная статья - это не научный прорыв, а лишь помощник быстрее понять как работает стандартный функционал в BitrixДавайте представим, что в разделе каталога у нас 150 запросов к БД. Вроде бы немного п...
Нередко при работе с Bitrix24 REST API возникает необходимость быстро получить содержимое определенных полей всех элементов какого-то списка (например, лидов). Традиционн...
Подборка свежих уроков, видео и пакетов по фреймворку Laravel за неделю. Читать дальше →
Подборка свежих уроков, видео и пакетов по фреймворку Laravel за неделю. Читать дальше →
Несмотря на то, что “в коробке” с Битриксом уже идут модули как для SOAP (модуль “Веб сервисы” в редакции “Бизнес” и старше), так и для REST (модуль “Rest API” во всех редакциях, начиная с...