CodeIgniter - 如何将数组从控制器传输到模型和控制器

时间:2015-07-10 15:41:29

标签: php mysql codeigniter

我已经学习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并与值进行比较以授予或拒绝访问同一页面。

问候。

2 个答案:

答案 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;
}

我希望这是有效的。