2013-07-09 6 views
0

2 시간 이상 유선 문제가 있습니다. 나는 그것을 알아낼 수 없었다. 변수 "errors"을 모델에서 전달하려고하는데 페이지를로드하려고하면 "undefined variable: errors"이라는 오류가 표시됩니다. 새로운 사용자를 등록하기위한 "등록"페이지를 작성하려고합니다. 여기서 I는 $ 데이터의 오류 [ '에러'] 배열을 검증 설정에 오류가있는 경우에 상기 레지스터컨트롤러에서 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('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); 

를하고 싶은 일을하기 위해 2 매개 변수를 사용할 수 있습니다 두 번째 매개 변수로'$ this-> load-> view' 배열을 전달해야합니다. CodeIgniter는 배열에서 키를 가져 와서 뷰 파일의 변수로 만듭니다. echo를 시도하기 전에'$ errors'가 설정되어 있는지 확인하십시오. –

답변

3

보기에 데이터를 전달하지 않습니다. 당신이보기에있을 때 당신이

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

아니면 그냥 (validation_errors()) 뷰에서 직접 테스트 할 수 있습니다 –

관련 문제