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
wherepour obtenir toutes les routes qui ont"admin / *". J'espère que cela aide. laravel.com/docs/7.x/…