【问题标题】:CodeIgniter - how to transfer array from controller to model and to controllerCodeIgniter - 如何将数组从控制器传输到模型和控制器
【发布时间】:2015-07-10 15:41:28
【问题描述】:

我已经学习 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');
}

在视图中我可以使用&lt;?=$user_data['user_type'] ?&gt;,但是当我在控制器中使用$user_data['user_type'] 时会出现以下错误:

严重性:通知

消息:未定义变量:user_type

文件名:controllers/dashboard.php

请帮助我。我想从 MySQL 获取 user_type 并与值进行比较以授予或拒绝访问同一页面。

问候。

【问题讨论】:

  • 试试$user_type = $data['user_data']['user_type'];
  • 非常感谢。有用! CodeIgniter 是最好的。

标签: php mysql codeigniter


【解决方案1】:

问题在于您的控制器。您假设当您分配 $data['user_data']=$this-&gt;user-&gt;get_user_data($userID) 时,它会神奇地变成控制器中的变量。不是这种情况。在您的控制器中,您几乎将事物视为普通的旧 precdural 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'];
    ...
}

【讨论】:

    【解决方案2】:

    将您的控制器更改为底部的此代码。此错误是因为您没有将变量发送到视图。

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

    我希望它是工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-04
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      相关资源
      最近更新 更多