2017-08-24 5 views
0

私は新しいユーザーを追加するためのライブラリを作成しています。CodeIgniter - フィールド名に対応するエラーメッセージにアクセスできません

class Register 
    { 
     private $CI; 
     public function add_new_user() 
     { 
      $CI =& get_instance(); 
      $CI->form_validation->set_rules('email', 'Email', 'required|callback_is_email_exist'); 
      if ($CI->form_validation->run() == TRUE) 
      { 
       $email = $_POST['email']; 
       $insert_data = array('email' => $email); 
       $CI->new_data->add_user($insert_data); 
      } 
     } 
     private function is_email_exist($email) 
     { 
      $CI =& get_instance(); 
      $email_result = ''; 
      $query = $CI->check->find_email($email); 
      foreach ($query->result_array() as $row) 
      { 
       $email_result = $row['email']; 
      } 
      if ($email_result == $email) 
      { 
       $CI->form_validation->set_message('is_email_exist', 'Such email already exist!'); 
       return FALSE; 
      } 
      else 
      { 
       return TRUE; 
      } 
     } 
    } 

私は、自動ロードにform_validationとモデルチェック、NEW_DATAを追加します。エラーの代わりにフォームを送信すると(そこにある場合)フィールド名のユーザー名(is_username_exist)に対応するエラーメッセージにアクセスできません。正しいエラーを得るにはどうすればよいですか?

答えて

0

CodeIgniterのフォームバリデーションはコントローラ用のフォームを送信するときに、それは、

を私のために__FUNCTION__仕事に 'is_email_exist' を置換

https://www.codeigniter.com/user_guide/libraries/form_validation.html#the-controller

コントローラウェイ

<?php 

class Register extends CI_Controller 
{ 

    public function __construct() { 
     parent::__construct(); 
     $this->load->library('form_validation'); 
     $this->load->model('some_model'); 
    } 

    public function index() { 
     $this->form_validation->set_rules('email', 'Email', 'required|callback_is_email_exist'); 

     if ($this->form_validation->run()) { 

      $insert_data = array(
       'email' => $this->input->post('email') 
      ); 

      $this->some_model->new_data->add_user($insert_data); 
     } 

     $data['title'] = 'Welcome To Codeigniter'; 

     $this->load->view('header', $data); 
     $this->load->view('someview', $data); 
     $this->load->view('footer'); 

    } 

    // Check user email 
    public function is_email_exist() { 
     // Single input check 
     $this->db->where('email', $this->input->post('email')); 
     $query = $this->db->get('user'); 

     // If user email greater than 0 
     if ($query->num_rows() > 0) { 
      return TRUE; 
     } else { 
      $this->form_validation->set_message('is_email_exist', 'Such email already exist!'); 
      return FALSE; 
     } 

    } 


} 
+0

あなたがしたことを説明する必要があります。さもなければ、OPはこれを貼り付けてコピーし、次に彼がエラーに遭遇したときに新しい投稿をするかもしれません。 – Goose

+0

はい、でも、このコードを多くのコントローラで使う必要がある場合は、このコードをすべてのコントローラにコピーするか、ライブラリを作成して、 '$ this-> my_library-> my_method'を使ってください。 – Stormkeeper

関連する問題