【问题标题】:Laravel Routing - Separate some routesLaravel 路由 - 分隔一些路由
【发布时间】:2015-08-05 15:37:40
【问题描述】:

我的路线定义为:

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']]);
    });
});

也许我用错了方法?

【问题讨论】:

  • 您只想分配中间件进行编辑和删除?
  • 是的@michael,基本上,每个人都可以查看/创建item,但只有具有特定角色的用户才能编辑或删除它们。
  • 对不起,我可能只是不明白这个问题。你能展示一下我们正在谈论的中间件吗?
  • 我的其他评论被删除了吗?奇怪的。我想做的是让普通授权用户可以访问createindexstore。虽然我希望“角色”用户拥有所有这些以及 editdelete
  • 好的,现在我明白了。然后我认为应该像我说的那样分配中间件,如果用户不是角色用户,应该会失败。

标签: php laravel laravel-5


【解决方案1】:

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

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

您可以运行 php artisan route:list 来验证。您应该会看到 role 在您的 2 个路由中启用了中间件。

【讨论】:

    猜你喜欢
    • 2020-10-17
    • 1970-01-01
    • 2017-03-06
    • 2021-02-26
    • 2013-06-03
    • 2016-03-05
    • 1970-01-01
    • 2011-10-06
    • 2019-09-03
    相关资源
    最近更新 更多