关于php:带有前缀,中间件和命名路由的管理路由组

Admin route group with prefix, middleware and named routes

我在名为VehicleController

的控制器中有一些命名的路由

1
2
vehicle.index
vehicle.show

然后我有一个admin部分,在其中定义了带有前缀和中间件的路由组。在本节中,我有一个资源控制器名称AdminVehicleController,它使用以下路由来处理Vehicle的CRUD任务(不确定这是否是最佳实践):

1
2
3
4
vehicle.index
vehicle.create
vehicle.store
...

但是这些命名的路由存在冲突。我的路线web.php现在看起来像这样:

1
2
3
4
5
6
7
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

在路由中组合所有这些参数的正确方法是什么?


尝试将as参数用于您的管理组

1
2
3
4
Route::group(['prefix' => 'admin', 'middleware' => 'is.admin', 'as'=> 'admin.'], function () {
    Route::get('/', 'AdminDashboardController@index')->name('dashboard');
    Route::resource('vehicle', 'AdminVehicleController');
});

参考链接


在第三个参数$options数组中提供一个names数组,每个键是资源控制器方法(索引,存储,编辑等),而值是您要为其指定名称的名称路线。

1
2
3
4
5
6
    Route::resource('vehicle', 'AdminVehicleController', [
        'names' => [
            'index' => 'admin.vehicle.index',
            // etc...
        ]
    ]);