You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:55:38