我已经学习CodeIgniter 5天了。现在我想写一个简单的权限函数。
我的控制器:
function index(){
$userID=$this->session->userdata('userID');
$data['user_data']=$this->user->get_user_data($userID);
$user_type=$user_data['user_type'];
if($user_type <=10){
redirect(base_url().'users/login');
} else {
//POBIERANIE DANYCH UŻYTKOWNIKA DO TABLICY $user_data
$this->load->view('header');
$this->load->view('topMenu',$data);
$this->load->view('sideBar');
$this->load->view('dashboard',$data);
$this->load->view('footer');
}
}
我的模特:
function get_user_data($userID){
$this->db->select()->from('users')->where('userID',$userID);
$query=$this->db->get();
return $query -> first_row('array');
}
在视图中,我可以使用<?=$user_data['user_type'] ?>
但是当我在控制器中使用$user_data['user_type']
时,会出现以下错误:
严重性:注意
消息:未定义的变量:user_type
文件名:controllers / dashboard.php
请帮帮我。我想从MySQL获取user_type
并与值进行比较以授予或拒绝访问同一页面。
问候。
答案 0 :(得分:0)
$data['user_data']=$this->user->get_user_data($userID)
时,它会神奇地变成控制器中的变量。不是这种情况。在你的控制器中,你几乎把事情视为普通的旧硬件。这意味着如果你指定$data['whatever'] = whatever
,那么你正在做的就是使$data
成为一个包含数组的变量。因此,如果要从$data
检索任何信息,则需要指定数组键。
所以最后,为了解决你的问题。我会改变这个:
function index(){
$userID = this->session->userdata('userID');
$data['user_data'] = $this->user->get_user_data($userID);
$user_type = $user_data['user_type'];
...
}
到此:
function index(){
$userID = this->session->userdata('userID');
$data['user_data'] = $this->user->get_user_data($userID);
$user_type = $data['user_data']['user_type'];
...
}
答案 1 :(得分:0)
将控制器更改为底部的此代码。此错误,因为您没有将变量发送到视图。
function index(){
$userID=$this->session->userdata('userID');
$user_data = $this->user->get_user_data($userID);
$data['user_data']['user_id']= $userID;
$data['user_data']['user_type']=$user_data['user_type'];
if($user_type <=10){
redirect(base_url().'users/login');
} else {
$this->load->view('header');
$this->load->view('topMenu',$data);
$this->load->view('sideBar');
$this->load->view('dashboard',$data);
$this->load->view('footer');
}
}
模型更改为
function get_user_data($userID){
$this->db->select()->from('users')->where('userID',$userID);
$query=$this->db->get()->row_array();
return $query;
}
我希望这是有效的。