2015-07-10 106 views
-3

我一直在學習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

回答

0

問題在於你的控制器。你假定當你指定$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']; 
    ... 
} 
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; 
} 

我希望這是工作。

相關問題