【问题标题】:Codeigniter Menu Based on Access Level基于访问级别的 Codeigniter 菜单
【发布时间】:2012-03-02 19:04:14
【问题描述】:

我正在尝试找到一种在 Codeigniter 中创建菜单的方法,该菜单根据用户的访问级别显示不同的选项,即他们是管理员、编辑还是普通用户。他们的一些选项会重叠。

我考虑过在视图中添加一个 if 语句,但这不是很好的 MVC。我还考虑在控制器中创建一个多维数组,根据用户访问级别设置菜单选项。

我非常感谢您的想法和意见。

【问题讨论】:

    标签: model-view-controller codeigniter


    【解决方案1】:

    您的每个用户帐户都应具有一组角色,即仪表板、销售、付款、产品、产品添加/编辑、产品删除、报告等(您可以使用 Ion Auth 的组作为角色)。然后创建一个显示菜单的视图,并将记录的用户角色传递给该视图。然后您遍历所有角色并将它们与用户角色进行比较。如果用户具有查看特定页面的角色,那么您可以在菜单中添加指向该页面的链接。

    就是这样:-) 希望我能帮上忙。

    【讨论】:

    • 所以你会在视图中放一个小的 if 语句来显示基于用户角色的特定菜单?我想这可能是我要做的,但不确定它是否被认为是“正确的”MVC。
    • 是的,完全正确。抱歉,如果没有正确解释。关于正确的 MVC ......我不知道这是否是最好的方法,但它很简单,它会工作:) 我即将在即将到来的项目中实现它。希望对你也有帮助。
    【解决方案2】:

    我总是让这件事变得比应该做的更难。为什么不为每个用户级别设置单独的视图(部分)?即:

    <?php
    if ($this->user_model->isAdmin())
    {
        $this->load->view('user_menu_admin');
    }
    elseif ($this->user_model->isModerator())
    {
        $this->load->view('user_menu_moderator');
    }
    elseif ($this->user_model->isMember())
    {
        $this->load->view('user_menu_member');
    }
    else
    {
        $this->load->view('user_menu_guest');
    }
    

    【讨论】:

    • 我最初使用这种方法,但我发现我复制了多个角色类型所需的大量功能。
    猜你喜欢
    • 2021-08-13
    • 2014-01-01
    • 2013-08-26
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多