【问题标题】:Admin route group with prefix, middleware and named routes具有前缀、中间件和命名路由的管理路由组
【发布时间】:2019-10-05 06:56:16
【问题描述】:

我在一个名为 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

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

【问题讨论】:

  • 你可以使用as键,'as'=> 'admin.',注意admin末尾的.ref
  • 我试过了,但是对于 admin(仪表板 URL),命名路由将是 admin. - 不是一个大问题,但很烦人。
  • 您也可以将其命名为dashboard,这样就可以命名为admin.dashboard,这样会更简洁。

标签: php laravel routes laravel-6


【解决方案1】:

尝试为您的管理员组使用as 参数

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

参考Link

【讨论】:

    【解决方案2】:

    提供一个names 数组作为第三个参数$options 数组的一部分,每个键是资源控制器方法(索引、存储、编辑等),值是您要赋予的名称路线。

        Route::resource('vehicle', 'AdminVehicleController', [
            'names' => [
                'index' => 'admin.vehicle.index',
                // etc...
            ]
        ]);
    

    【讨论】:

      猜你喜欢
      • 2019-09-03
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 2019-06-30
      • 2021-01-05
      • 2015-10-26
      • 2020-12-04
      相关资源
      最近更新 更多