Laravel 9中如何为资源控制器指定自定义路由名称?
解决Laravel 9资源路由在路由组中的命名问题
你遇到的问题是因为在prefix('users')的路由组中使用空URI的资源路由时,Laravel无法自动生成带前缀的路由名称。以下是两种正确的解决方式:
方法一:使用names()方法指定路由名称前缀
直接通过names()方法给资源路由的所有动作统一设置名称前缀,生成的路由名称会自动带上users.前缀,和你最初未加路由组时的命名完全一致:
Route::prefix('users')->group(function () { Route::resource('/', UsersController::class)->names('users'); });
这样生成的路由名称就是users.index、users.create等,同时URI会是users/、users/create等符合预期的格式。
方法二:通过资源路由的选项参数指定完整名称
如果需要更精细地控制每个路由的名称,可以传递names选项数组,逐个指定每个动作的路由名称:
Route::prefix('users')->group(function () { Route::resource('/', UsersController::class, [ 'names' => [ 'index' => 'users.index', 'create' => 'users.create', 'store' => 'users.store', 'show' => 'users.show', 'edit' => 'users.edit', 'update' => 'users.update', 'destroy' => 'users.destroy', ] ]); });
关键说明
你之前尝试的->name('users')写法错误,因为name()方法是给单个路由设置名称,而资源路由会生成多个路由条目,必须使用names()方法(复数形式)来为资源路由的所有动作设置名称前缀。
内容的提问来源于stack exchange,提问作者Pouya Vaghefi
相关产品推荐
相关产品推荐

