Drogi główne aplikacji:Jak nie przeciążać głównych tras trasami pakietów?
Route::get('/login', [
'as' => 'user.login',
'uses' => '[email protected]'
];
Route::get('/logout', [
'as' => 'user.logout',
'uses' => '[email protected]'
];
Route::get('/admin', [
'as' => 'admin.index',
'uses' => '[email protected]'
];
Mam pakiet (sprzedawca) (Przykład: metrakit/mypackage) z routes.php pliku. W tym pliku mam trasę:
Route::get('/{slug}', [
'as' => 'item.show',
'uses' => '[email protected]'
];
Ta trasa przeciąża wszystkie moje główne trasy! Moje trasy takie jak "/ login", "/ logout", "/ bob", ... są przekierowywane do mojego kontrolera ItemController.
nie chcę mieć trasę jak
Route::get('/item/{slug}', array('as' => 'item.show', 'uses' => '[email protected]');
I myśli, muszę zrobić wzór trasy tak:
Route::pattern('slug', '^((?!(login|logout|admin)).)*$');
Ale wygląda trochę brudny i nie jest dynamiczny.
Więc szukam lepszego rozwiązania.
Problem stanowi kolejność ładowania tras. Prawdopodobnie używasz ładowania twoich własnych tras w metodzie 'boot()'. Spowoduje to załadowanie twoich tras przesyłek przed normalnymi trasami. Umieszczenie trasy catchall na górze zrobi to, co właśnie widzisz. Domyślam się, że najlepszym wyjściem byłoby nieautomatyczne ładowanie tras z pakietu w metodzie bootowania, ale ręczne ładowanie ich w poprzednim filtrze (po załadowaniu zwykłych tras). – Robert