Php Laravel路由-分离一些路由
我的路线定义为:Php Laravel路由-分离一些路由,php,laravel,laravel-5,Php,Laravel,Laravel 5,我的路线定义为: Route::resource('item', 'ItemController'); 我想做的是将其中一些路由,特别是edit和delete放在一个组中 Route::group(['middleware' => ['role']], function() { Route::resource('item', 'ItemController', ['only' => ['edit', 'delete']]); } 但这不管用。那么,我必须逐一定义每条路线
Route::resource('item', 'ItemController');
我想做的是将其中一些路由,特别是edit
和delete
放在一个组中
Route::group(['middleware' => ['role']], function() {
Route::resource('item', 'ItemController', ['only' => ['edit', 'delete']]);
}
但这不管用。那么,我必须逐一定义每条路线吗?还是有更好的解决办法
编辑:
对不起,我好像问得不好。因此,让我在这里澄清一下
我有一个基本的auth
用户,可以创建和查看项目
。我不希望它做的是编辑和删除
然后,我还有一个角色
用户,负责执行auth
的所有操作,可以编辑和删除项目
因此,基本上,常规授权用户可以访问项目
,而角色
用户可以完全访问
当前代码似乎只赋予角色
用户编辑和删除功能,而不提供查看或创建功能
更清楚地说,我的实际路线是这样的:
Route::group(['middleware' => ['auth']], function()
{
Route::resource('items', 'SitesController');
Route::group(['middleware' => ['role']], function() {
Route::resource('item', 'ItemController', ['only' => ['edit', 'delete']]);
});
});
也许我用了错误的方法?上面的代码可以工作,您只是错误地命名了操作。您应该使用销毁而不是删除。请尝试以下代码:
Route::resource('item', 'ItemController');
Route::group(['middleware' => ['role']], function() {
Route::resource('item', 'ItemController', ['only' => ['edit', 'destroy']]);
});
您可以运行php artisan route:list进行验证。您应该会看到在您的两条路由中启用了角色中间件。上述代码将正常工作,您只是错误地命名了操作。您应该使用销毁而不是删除。请尝试以下代码:
Route::resource('item', 'ItemController');
Route::group(['middleware' => ['role']], function() {
Route::resource('item', 'ItemController', ['only' => ['edit', 'destroy']]);
});
您可以运行php artisan route:list进行验证。你应该看到在你的两条路线中启用了角色中间件。你想只将中间件分配给编辑和删除吗?是的@michael,基本上,每个人都可以查看/创建
项目
,但只有具有特定角色的用户可以编辑或删除它们。对不起,我可能只是不理解这个问题。你能展示一下我们正在讨论的中间件吗?我的其他评论被删除了吗?奇怪的我想做的是让常规授权用户能够访问创建
、索引
和存储
。虽然我希望“角色”用户拥有所有这些功能,还有编辑和删除。好的,现在我明白了。然后我认为应该像我说的那样分配中间件,如果用户不是角色用户,那么应该失败。你想只分配中间件来编辑和删除吗?是的@michael,基本上,每个人都可以查看/创建项目
,但只有具有特定角色的用户才能编辑或删除它们。对不起,我可能只是不理解这个问题。你能展示一下我们正在讨论的中间件吗?我的其他评论被删除了吗?奇怪的我想做的是让常规授权用户能够访问创建
、索引
和存储
。虽然我希望“角色”用户拥有所有这些功能,还有编辑和删除。好的,现在我明白了。然后我认为应该像我说的那样分配中间件,如果用户不是角色用户,那么中间件应该失败。