J'ai deux types de routes, les routes administratives et les routes frontales.
Les routes frontales
Route::group(['where' => ['page' => '^(?!admin|api)$', 'template' => '^(?!admin|api)$']], function ({ Route::get('{locale?}/', ['uses' => '\App\Http\Controllers\loadViewController@home']); Route::get('{locale?}/{page}', ['uses' => '\App\Http\Controllers\loadViewController@index']); Route::get('{locale?}/{template?}/{page}', ['uses' => '\App\Http\Controllers\loadViewController@detail']); });
Les routes backend
Route::prefix('admin/dashboard')->group(function () { Route::get('/', 'DashboardController@index')->name('dashboard'); });
3 Réponses :
Le moyen le plus simple est de regrouper les deux URL en groupes séparés. Exemple comme suit:
Route::group(['prefix' => 'home', 'as' => 'home'], function () { Route::get('/record/{id}', 'HomeController@getRecord');
});
Route::group(['prefix' => 'admin', 'as' => 'admin'], function () { Route::post('/dashboard', 'AdminController@dashboard');
});
Ouais, mais je ne veux pas d'itinéraires commençant par / home. Merci pour la réponse
Si vous le souhaitez, vous pouvez mettre une contrainte sur le paramètre de route locale
:
Route::pattern('locale', '^(?!(api|admin)$)(\w*)');
Vous pouvez mettre cela dans le boot
méthode de votre RouteServiceProvider
et il ne permettra plus au paramètre de route locale
de correspondre à 'api'
ou 'admin' code>.
Vous pouvez enregistrer des itinéraires séparés dans RouteServiceProvider. Voici comment vous pouvez le faire.
Dans RouteServiceProvider.php, faites:
protected function mapAdminRoutes() { Route::prefix('admin') ->middleware('admin') ->namespace($this->namespace.'\Admin') ->group(base_path('routes/admin.php')); }
Définition de mapFrontendRoutes ():
protected function mapFrontendRoutes() { Route::prefix('{locales?}') ->middleware('frontend') ->namespace($this->namespace.'\Frontend') ->group(base_path('routes/frontend.php')); }
Définition de mapAdminRoutes ():
public function map() { $this->mapFrontendRoutes(); $this->mapAdminRoutes(); }
Personnellement, je trouve cela très utile, aide à déclarer des routes logiques et sans interférence. Ouvert aux commentaires.
Cela n'a pas fonctionné exactement, mais c'est bien pour maintenir la structure :)
Recevez-vous une erreur? Ou ce n'est pas conforme au cas d'utilisation que vous recherchez? Je peux essayer de t'aider
Cela n'affecte pas la vue chargée. Peut-être trouvez-vous ce dépôt utile github.com/rappasoft/laravel- passe-partout / blob / master / routes / …
Voulez-vous donc charger différents ViewControllers en fonction des groupes de routes, n'est-ce pas?
Ouais, j'ai besoin d'un filtre qui lit l'url comme -> where ('page', 'home');
Vous pouvez jeter un œil aux contraintes des expressions régulières et essayer d'utiliser une contrainte
where
pour obtenir toutes les routes qui ont"admin / *"
. J'espère que cela aide. laravel.com/docs/7.x/…