2013-07-09 3 views
0

Я столкнулся с проводной проблемой более 2 часов. Я не мог понять. Я пытаюсь передать переменную "errors" из модели для просмотра, но когда я пытаюсь загрузить страницу, она показывает ошибку, говорящую "undefined variable: errors". Я пытаюсь создать страницу «register» для регистрации новых пользователей. Вот мой контроллер для регистраОшибка при передаче данных с контроллера для просмотра Codeigniter

function register(){ 
    if($_POST){ 
     $config = array(
      array(
       'field' => 'username', 
       'label' => 'Username', 
       'rules' => 'trim|required|min_length[3]|is_unique[users.username]' 
      ), 
      array(
       'field' => 'password', 
       'label' => 'Password', 
       'rules' => 'trim|required|min_length[5]' 
      ), 
      array(
       'field' => 'password2', 
       'label' => 'Password Confirm', 
       'rules' => 'trim|required|min_length[5]|matches[password]' 
      ), 
      array(
       'field' => 'user_type', 
       'label' => 'User Type', 
       'rules' => 'required' 
      ), 
      array(
       'field' => 'email', 
       'label' => 'Email', 
       'rules' => 'trim|required|is_unique[users.email]|valid_email' 
      ) 
     ); 
     $this->load->library('form_validation'); 
     $this->form_validation->set_rules($config); 
     if($this->form_validation->run() == FALSE){ 
      $data['errors'] = validation_errors(); 
     }else{ 
      $data_array = array(
       'username' => $_POST['username'], 
       'password' => sha1($_POST['password']), 
       'email' => $_POST['email'], 
       'user_type' => $_POST['user_type'] 
      ); 
      $this->load->model('user'); 
      $userid = $this->user->create_user($data_array); 
      $this->session->set_userdata('userID', $userid); 
      $this->session->set_userdata('user_type',$_POST['user_type']); 
      redirect(base_url().'index.php/posts'); 
     } 
    } 
    $this->load->helper('form'); 
    $this->load->view('header'); 
    $this->load->view('register_user'); 
    $this->load->view('footer'); 
} 

В выше, когда есть ошибка в проверке я установил ошибку в $ данных [ «ошибки»] массив. мнение приводится ниже

<h2>Register User</h2> 
<?php if($errors): ?> 
<div style="background:red;color:white;"> 
<?php echo $errors; ?> 
</div> 
<?php endif; ?> 

Но когда я открываю страницу регистра в браузере, она показывает ошибку говоря "Undefined variable: errors". Может ли кто-нибудь сказать мне, где я сделал ошибку?

+2

Вам нужно передать массив в '$ this-> load-> view' в качестве второго параметра. CodeIgniter берет ключи из этого массива и делает их переменными в файле вида. Удостоверьтесь, что '$ errors' установлен, прежде чем пытаться повторить его. –

ответ

3

Вы не передаёте данные своим мнениям. Вы можете использовать 2-й параметр для передачи данных в ваших взглядах так, а не делать

$this->load->view('header'); 
$this->load->view('register_user'); 
$this->load->view('footer'); 

Вы хотите сделать

$aData['errors'] 
$this->load->view('header', $aData); 
$this->load->view('register_user', $aData); 
$this->load->view('footer', $aData); 

Затем, когда вы находитесь на ваш взгляд, вы можете сделать

<h2>Register User</h2> 
<?php if($errors): ?> 
    <div style="background:red;color:white;"> 
     <?php echo $errors; ?> 
    </div> 
<?php endif; ?> 
+1

Или вы можете просто проверить, есть ли (validation_errors()) непосредственно из представления –

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