Laravel按名称分组路由:如何将指定路由归入目标组
Laravel路由命名统一解决方案
你只需要把/all路由移到name('post.')的子分组中,并将它的路由名称改为index,就能让所有路由保持统一的admin.post.*命名结构。
修改后的完整路由代码如下:
Route::prefix('/admin/post')->middleware('admin')->name('admin.')->group(function(){ Route::name('post.')->group(function(){ Route::get('/all', [AdminPostController::class, 'index'])->name('index'); // 移到子分组并修改名称 Route::get('/create', [AdminPostController::class, 'create'])->name('create'); Route::post('/store', [AdminPostController::class, 'store'])->name('store'); Route::get('/{post:slug}/edit', [AdminPostController::class, 'edit'])->name('edit'); Route::patch('/{post:slug}/update', [AdminPostController::class, 'update'])->name('update'); Route::delete('/{post:slug}', [AdminPostController::class, 'destroy'])->name('delete'); }); });
命名规则说明
- 调整后,列表页路由的名称变为
admin.post.index - 其他路由名称保持原有的
admin.post.create、admin.post.store等格式 - 所有路由都遵循
admin.post.动作名称的统一规范,更贴合Laravel的最佳实践
如果你坚持要保留admin.post作为列表页的路由名称,也可以用这种方式调整:
Route::prefix('/admin/post')->middleware('admin')->name('admin.post.')->group(function(){ Route::get('/all', [AdminPostController::class, 'index'])->name(''); // 空名称,最终路由名为admin.post Route::get('/create', [AdminPostController::class, 'create'])->name('create'); Route::post('/store', [AdminPostController::class, 'store'])->name('store'); Route::get('/{post:slug}/edit', [AdminPostController::class, 'edit'])->name('edit'); Route::patch('/{post:slug}/update', [AdminPostController::class, 'update'])->name('update'); Route::delete('/{post:slug}', [AdminPostController::class, 'destroy'])->name('delete'); });
这种方式下,列表页路由名是admin.post,其他路由是admin.post.create等,也能维持命名体系的统一,但第一种方案(用index作为动作名)更符合RESTful路由的命名习惯。
内容的提问来源于stack exchange,提问作者mohit baraiya
相关产品推荐
相关产品推荐

