2012-03-02 102 views
1

我试图找到一种在Codeigniter中创建菜单的方法,该菜单根据用户的访问级别显示不同的选项,即如果他们是管理员,编辑者或只是普通用户。他们的一些选择将重叠。基于访问级别的Codeigniter菜单

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

我真的很感激的想法和意见。

回答

0

每个用户帐户应该有一组角色,即仪表板,销售,支付,产品展示,产品添加/编辑,产品删除,报告等(可以使用离子验证团体为角色)。然后你创建一个显示菜单的视图,并且你将记录的用户角色传递给该视图。然后,您将浏览所有角色并将其与用户角色进行比较。如果用户具有查看特定页面的角色,则可以在菜单中为该页面添加链接。

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

+1

所以你会在视图中放一个小的if语句来显示基于用户角色的特定菜单?我认为这可能是我要做的,但不确定它是否被认为是“正确的”MVC。 – chegwin 2012-03-04 20:19:21

+0

是的,确切地说。对不起,如果没有解释正确。而关于正确的MVC ......我不知道这是否是最好的方法,但它很简单,它会工作:)我即将在即将推出的项目中实现它。希望它对你也有帮助。 – Stan 2012-03-05 01:04:13

0

我总是让这一个比它应该更难。为什么不为每个用户级别分别提供不同的视图(部分)?即:

<?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'); 
} 
+1

我最初使用这种方法,但我发现我复制了很多在多种角色类型中需要的功能。 – chegwin 2012-03-04 20:17:47