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,并将其与允许或拒绝访问同一页面的值进行比较。

问候。

+1

试试''user_type = $ data ['user_data'] ['user_type'];' – Craig

+0

非常感谢。有用! CodeIgniter是最好的。 – user3399458

问题在于你的控制器。你假定当你指定$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; 
} 

我希望这是工作。