我有一个定义为:
Route::resource('item', 'ItemController');
我想做的是把这些路由中的一些,特别是edit
和delete
放在一个组中。
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个路由中启用了角色中间件