我在这里尝试做的主要是在仪表板控制器中。到目前为止,我有使用Phil Sturgeon模板库的索引功能来构建仪表板作为主要内容视图。我在这里要考虑一些事情。我有管理员和基本用户能够看到仪表板。管理员将能够从仪表板内部看到基本用户可以看到的不同信息,如站点信息,待定注册等。
我是否应该为不同类型的用户提供单独的仪表板视图?
如果是这样,我如何从Admin_Controller访问user_data,以便我可以在仪表板的索引功能中执行if语句检查以查看它们是什么类型的用户?
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Admin_Controller extends CI_Controller
{
public $data = array();
public function __construct()
{
parent::__construct();
$this -> load -> model('user_model', 'user');
$user_id = $this -> session -> userdata('user_id');
$user_data = $this -> user -> get($user_id);
$this -> data['user_data'] = $user_data;
$this -> template -> set_theme('saturn') -> set_layout('default', 'admin') -> set_partial('navigation', 'admin/partials/navigation') -> set_partial('header', 'admin/partials/header');
}
}
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Dashboard extends Admin_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
$this -> template -> build('admin/dashboard', $this -> data);
}
}
更新
我试图找出我可以从Admin_Controller访问$ user_data对象,以便我可以像这样运行if语句。
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Dashboard extends Admin_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
if ($user_data -> role_id == 2)
{
$dashboard = 'admin_dashboard';
}
else
{
$dashboard = 'user_dashboard';
}
$this -> template -> build('admin/'.$dashboard, $this -> data);
}
}
有什么想法吗?有没有人知道我如何将数据对象传递给仪表板控制器,以便它可以用于执行if语句?
答案 0 :(得分:1)
我是否应该为不同类型的单独的仪表板视图 用户?
取决于仪表板结构。如果对于常规用户和管理员来说完全不同,那么为booth用户类型构建单独的仪表板可能会更好。如果存在一些常见元素,则可以在视图中使用if语句,以检查用户类型并使用righ仪表板部件。这更多是关于您的方便,而不是约定。
如果是这样,我如何从Admin_Controller访问user_data 我可以在索引函数中执行if语句检查 仪表板,看看他们是什么类型的用户?
您应该将user_data数组传递给视图,而不是从中读取会话数据。查看系统部件应始终直接从控制器获取所有数据,而不是从会话或任何其他应用程序组件获取所有数据。
答案 1 :(得分:0)
我可以给出一个建议,因为您将拥有一个必须始终存在的管理员帐户,认为它将是您的用户表的第一条记录(因为管理员和用户将是相同的表并且将具有不同的作用),所以id将为1,我想它应该是,所以在你的仪表板控制器中
public function index()
{
if($this -> session -> userdata('user_id') == 1){
$this -> template -> build('admin/dashboard', $this -> data);
}else{
//user dashboard.
}
}
ELSE您可以通过您的角色定义它,例如admin具有Role Id = 1。
我希望它对你有所帮助。