Как не перегружать основные маршруты пакетными маршрутами?


Основные Маршруты Приложения :

Route::get('/login', [
    'as' => 'user.login', 
    'uses' => 'LoginController@login'
];
Route::get('/logout', [
    'as' => 'user.logout', 
    'uses' => 'LoginController@logout'
];
Route::get('/admin', [
    'as' => 'admin.index', 
    'uses' => 'AdminController@index'
];

У меня есть пакет (поставщик) (пример: metrakit/mypackage)с маршрутами.PHP-файл. В этом файле у меня есть маршрут:

Route::get('/{slug}', [
    'as' => 'item.show', 
    'uses' => 'ItemController@show'
]; 

Этот маршрут перегружает все мои основные маршруты ! Мои маршруты, такие как" /login"," /logout"," /bob",... все перенаправляются на мой контроллер ItemController.

Я не хочу иметь маршрут, подобный

Route::get('/item/{slug}', array('as' => 'item.show', 'uses' => 'ItemController@show'); 

Я думаю, что мне нужно сделать шаблон маршрута следующим образом:

Route::pattern('slug', '^((?!(login|logout|admin)).)*$'); 

Но он выглядит немного грязным, и это не так. активный.

Поэтому я ищу лучшее решение.

2 6

2 ответа:

Похоже, ты поступил правильно. Проблема, которая может возникнуть при добавлении нового маршрута в ваш маршрут.php файл, вы должны были бы добавить в свой шаблон маршрута, а также. Однако ее можно решить, создав глобальную переменную для установки только один раз.

Это может быть так же просто, как загрузить поставщика услуг вашего поставщика в конце вашего приложения.PHP-файл. Маршруты обрабатываются в той последовательности, в которой они зарегистрированы.