在Laravel PHP中设置控制器的正确方式



我不知道创建和使用控制器的正确方法是什么。让我们想象一下,我们有一个带有索引方法的控制器来显示数据库记录,我们有以下数据库结构:

|id | name | active |

所以我只想在用户端显示活动记录,在管理端显示所有记录(活动和非活动(。从逻辑上讲,对于这两种操作,我们都会使用索引方法,对吧?我们应该为用户端使用索引方法,为管理端创建另一种方法,还是反之亦然?什么是最灵活的解决方案,以便我们可以对两个视图都使用Route::resource?

首先,您必须在应用程序中实现一个角色系统,并使两个角色分别为管理员和用户。你可以用很多方法来过滤,但我建议的是:

  1. 在您的模型中使用一个作用域,如果角色是用户,该作用域将删除无效的作用域
  2. 在模型中使用trait为每个角色返回正确的数据,比如trait中的两个方法,一个用于用户,另一个用于管理员

这两种方法在模型级别上进行过滤,这就是我的建议,拥有一个高质量的软件。并且也不具有肮脏和硬编码的解决方案。因为如果这种情况将来会改变,你不必交叉所有的代码,只需编辑特定的部分。

您可以查看laravel文档以查看有关概念的详细信息。

祝好运

如果您想保持相同的方法,请仅在用户不是管理员时添加对数据库查询的限制。例如

$query = AppModel::query();
if( !Auth::user()->isAdmin() )
{
$query->where('active', true);
}
$records = $query->get();

相关内容

最新更新