2015-07-10 3 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'] в контроллере появляется следующее сообщение об ошибке:

Серьезность : Уведомление

Сообщение: Undefined переменной: user_type

Имя файла: Контроллеры/dashboard.php

Пожалуйста, помогите мне. Я хотел бы получить user_type от MySQL и сравнить со значением, чтобы предоставить или отказаться от доступа к той же странице.

С уважением.

+1

Попробуйте с помощью '$ user_type = $ data ['user_data'] ['user_type'];' – Craig

+0

Большое спасибо. Оно работает! CodeIgniter - лучший. – user3399458

ответ

0

проблема заключается в вашем контроллере. Вы предполагаете, что когда вы назначаете $data['user_data']=$this->user->get_user_data($userID), он волшебным образом превратится в переменную в контроллер. Это не тот случай. В вашем контроллере вы в значительной степени относитесь к вещам как к обычным старым phpddural. Это означает, что если вы назначаете $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; 
} 

я надеюсь, что это работа.

Смежные вопросы