具有前缀、中间件和命名路由的管理路由组
Admin route group with prefix, middleware and named routes
我在名为 VehicleController
:
的控制器中有一些命名路由
vehicle.index
vehicle.show
然后我有一个管理部分,我在其中定义了一个带有前缀和中间件的路由组。在本节中,我有一个资源控制器名称 AdminVehicleController
来处理 Vehicle
的 CRUD 任务(不确定这是否是最佳实践),路径如下:
vehicle.index
vehicle.create
vehicle.store
...
但是这些命名路由是相互冲突的。我的路线 web.php
现在看起来像这样:
Route::get('vehicles', 'VehicleController@index')->name('vehicle.index');
Route::get('vehicle/{vehicle}', 'VehicleController@show')->name('vehicle.show');
Route::group(['prefix' => 'admin', 'middleware' => 'is.admin'], function () {
Route::get('/', 'AdminDashboardController@index');
Route::resource('vehicle', 'AdminVehicleController');
});
如果我将 'name' => 'admin'
添加到 Route::group()
数组,路由名称将是 adminvehicle.index
而不是 admin.vehicle.index
。
在路由中组合所有这些参数的正确方法是什么?
提供一个 names
数组作为第三个参数 $options
数组的一部分,每个键都是资源控制器方法(索引、存储、编辑等),值是您要为路线指定的名称。
Route::resource('vehicle', 'AdminVehicleController', [
'names' => [
'index' => 'admin.vehicle.index',
// etc...
]
]);
尝试为您的管理员组使用 as
参数
Route::group(['prefix' => 'admin', 'middleware' => 'is.admin', 'as'=> 'admin.'], function () {
Route::get('/', 'AdminDashboardController@index')->name('dashboard');
Route::resource('vehicle', 'AdminVehicleController');
});
引用Link
我在名为 VehicleController
:
vehicle.index
vehicle.show
然后我有一个管理部分,我在其中定义了一个带有前缀和中间件的路由组。在本节中,我有一个资源控制器名称 AdminVehicleController
来处理 Vehicle
的 CRUD 任务(不确定这是否是最佳实践),路径如下:
vehicle.index
vehicle.create
vehicle.store
...
但是这些命名路由是相互冲突的。我的路线 web.php
现在看起来像这样:
Route::get('vehicles', 'VehicleController@index')->name('vehicle.index');
Route::get('vehicle/{vehicle}', 'VehicleController@show')->name('vehicle.show');
Route::group(['prefix' => 'admin', 'middleware' => 'is.admin'], function () {
Route::get('/', 'AdminDashboardController@index');
Route::resource('vehicle', 'AdminVehicleController');
});
如果我将 'name' => 'admin'
添加到 Route::group()
数组,路由名称将是 adminvehicle.index
而不是 admin.vehicle.index
。
在路由中组合所有这些参数的正确方法是什么?
提供一个 names
数组作为第三个参数 $options
数组的一部分,每个键都是资源控制器方法(索引、存储、编辑等),值是您要为路线指定的名称。
Route::resource('vehicle', 'AdminVehicleController', [
'names' => [
'index' => 'admin.vehicle.index',
// etc...
]
]);
尝试为您的管理员组使用 as
参数
Route::group(['prefix' => 'admin', 'middleware' => 'is.admin', 'as'=> 'admin.'], function () {
Route::get('/', 'AdminDashboardController@index')->name('dashboard');
Route::resource('vehicle', 'AdminVehicleController');
});
引用Link