我有一个具有管理员,经理和员工角色的应用程序。经理可以编辑所有员工的字段A,B,C。管理员可以编辑所有用户的字段A,B,D,E。
问题:我该如何过滤…
黑暗中的一个镜头可能,但你可以为你拥有的每个角色创建一个类,它有一个常量来决定哪个字段可用于该特定角色?
class AdminRole { CONST EDITABLE_USER_FIELDS = [ 'name', 'address', 'phone', ... ]; }
并在您的请求中:
$className = ucfirst($user->getRole()) . 'Role'; $fields = $className::EDITABLE_USER_FIELDS; $data = $request->only($fields);
我没有对此进行测试,但只要您的类名与角色名称相同,这就应该有效。
希望这可以帮助!
我认为您使用相同的表称“用户”用于存储管理员,经理和员工的数据。创建一个新列说'user_role'。每个用户将分别为管理员,经理和员工提供1,2和3。您只需从表中获取“user_role”即可。
的 下一个 强> ,你需要为角色创建泛型函数并将user_role传递给它。
我在Laracasts上发现了这个视频,我很久以前就看过但是忘记了。它给了我我需要的确切答案。 显然创建一个新的控制器并坚持Laravel的CRUD约定是要走的路。 https://laracasts.com/series/laravel-from-scratch-2018/episodes/20
谢谢大家花时间回答我的问题!