Laravel Routing -分离一些路由


Laravel Routing - Separate some routes

我有一个定义为:

Route::resource('item', 'ItemController');

我想做的是把这些路由中的一些,特别是editdelete放在一个组中。

Route::group(['middleware' => ['role']], function() {
    Route::resource('item', 'ItemController', ['only' => ['edit', 'delete']]);
}

这不起作用。那么我必须一个一个地定义每条路线吗?还是有更好的解决办法?

编辑:

我很抱歉,但我似乎没有问清楚这个问题。所以让我在这里做一些澄清。

我有一个基本的auth用户,可以创建和查看items。我不希望它做的是编辑和删除。

我也有一个role用户做auth可以做的一切和编辑和删除items

所以基本上,普通授权用户可以访问items,而role用户有完全访问权限。

目前的代码似乎只给role用户编辑和删除功能,没有视图或创建。

为了更清楚,下面是我的实际路线:

Route::group(['middleware' => ['auth']], function()
{
    Route::resource('items', 'SitesController');
    Route::group(['middleware' => ['role']], function() {
        Route::resource('item', 'ItemController', ['only' => ['edit', 'delete']]);
    });
});

也许我做错了?

上面的代码可以工作,只是您错误地命名了操作。您应该使用destroy而不是delete。试试下面的代码:

Route::resource('item', 'ItemController');
Route::group(['middleware' => ['role']], function() {
  Route::resource('item', 'ItemController', ['only' => ['edit', 'destroy']]);
});

可以运行php artisan route:list进行验证。你应该看到在你的2个路由中启用了角色中间件