CodeIgniter - 如何将阵列从控制器传输到模型和控制器
问题描述:
我一直在学习CodeIgniter 5天。现在我想写一个简单的权限函数。CodeIgniter - 如何将阵列从控制器传输到模型和控制器
我的控制器:
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']
出现以下错误:
严重性:Notice
消息:未定义的变量:USER_TYPE
文件名:控制器/ dashboard.php
请帮助我。我想从MySQL获得user_type
,并将其与允许或拒绝访问同一页面的值进行比较。
问候。
答
问题在于你的控制器。你假定当你指定$data['user_data']=$this->user->get_user_data($userID)
时,它会奇迹般地变成控制器中的一个变量。不是这种情况。在你的控制器中,你几乎将事情看作普通的早期php。这意味着如果你分配了$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'];
...
}
答
改变您的控制器添加到该代码底部。这个错误,因为你不发送变量的意见。
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;
}
我希望这是工作。
试试''user_type = $ data ['user_data'] ['user_type'];' – Craig
非常感谢。有用! CodeIgniter是最好的。 – user3399458