Мне интересно, как бороться с 400+ маршрутами.
В настоящее время мы разделяем все маршруты на несколько файлов в соответствии с пространством имен контроллера, к которому они принадлежат.
Структура App/Http/Routes
выглядит примерно так:
- Auth.php
- Marketing.php
- Orders.php
Все наши маршруты названы. Но тут возникает актуальная проблема, с которой мы столкнулись.
Наши маршруты именуются с помощью классов, заполненных константами, которые определяют имя маршрута.
namespace App\Http\Controllers\Marketing;
class RouteConstants
{
/**
* MarketingController
*/
const INDEX = 'marketing.index';
const DISABLED = 'marketing.disabled';
Эти классы констант находятся в пространстве имен контроллера. Затем они используются в Marketing.php
Файл маршрутов выглядит так:
/**
* Marketing Routes
*/
Route::group(['namespace' => 'App\Http\Controllers\Marketing'], function() {
/**
* MarketingController Routes
*/
Route::get('marketing/overview', [
'uses' => 'MarketingController@index',
'as' => MarketingRoutes::INDEX
]);
Route::get('marketing/disabled', [
'uses' => 'MarketingController@showDisabled',
'as' => MarketingRoutes::DISABLED
]);```
Это сделано потому, что это позволяет нам использовать функции автозаполнения PhpStorm, а также видеть, где используется каждый маршрут.
Но проблема в том, что мы используем две системы одновременно. Внутренняя система имен маршрутизации Laravel, и в то же время мы используем нашу собственную систему, определяющую имена как константы.
Должен быть лучший способ управлять таким количеством маршрутов и иметь возможность проверять использование в файлах проекта.
В настоящее время это также довольно грязно в наших взглядах:
<a href="{{ route(App\Http\Controllers\Marketing\RouteConstants::INDEX) }}">Marketing</a>
Я уже пробовал плагин Laravel для PhpStorm, но он не работает должным образом при наличии папки с маршрутами, которые автоматически загружаются в RouteServiceProvider
,
Отмеченный в журнале изменений плагина Laravel для PhpStorm (версия 0.11), была добавлена поддержка структуры маршрутов Laravel 5.3.
Я предлагаю вам переместить каталог маршрутов в корневой каталог вашего проекта. Так же, как у Laravel 5.3.
Например: app/Http/Routes/
становится routes/
,
При использовании версии плагина 0.11 и наличии структуры папок 5.3 я не вижу причин, по которым автоматическое предложение имен маршрутов не будет работать.
Надеюсь это поможет!
Я думаю, что если вы дошли до const в контроллере, текст будет короче, чтобы использовать обычные имена. Тогда ваши взгляды снова будут лучше.
С другой стороны, вы можете посмотреть в документации на Route :: resource, где ваш файл маршрутов станет намного меньше, так как он автоматически настраивает все неработающие маршруты и затем передает ответственность контроллеру.