2011-07-15 98 views
2

我創建了一個幫手檢查,如果在我的user數據庫表中存在的用戶ID:笨輔助函數來驗證規則

if (! function_exists('valid_user')) 
    { 
     function valid_user($user_id) 
     { 
      $ci=& get_instance(); 
      $ci->load->database(); 

      $ci->db->select('id'); 
      $ci->db->where('id', $user_id); 
      $ci->db->where('activated', 1); 
      $ci->db->where('banned', 0); 
      $ci->db->limit(1); 
      $query = $ci->db->get('users'); 

      if ($query->num_rows() > 0) //if user exists 
      { 
       return TRUE; 
      } 
      else 
      { 
       return FALSE; 
      } 
     } 
    } 

我添加功能到我的驗證規則,像這樣

$this->form_validation->set_rules('user_id', 'User ID', 'required|xss_clean|max_length[11]|is_natural_no_zero|valid_user'); 

它不執行valid_user函數。我在這裏做錯了什麼?

+2

你嘗試加入'valid_user'功能到form_validation運行控制器? – user482594

+2

此外,在你的'set_rules'中,你必須根據http://codeigniter.com/user_guide/libraries/form_validation.html#callbacks – user482594

+1

@user設置'callback_valid_user'而不是'valid_user':你的兩個意見將用於解決問題;將它們添加爲答案,而不是評論! – Matt

回答

1

在我以前的經驗中,我通常在調用回調的地方添加驗證功能(在您的情況下,valid_user)。

例如,我會將valid_user方法放在user_controller中,其中一種註冊方法將調用valid_user方法。

此外,看起來,在您的set_rules中,您必須根據Codeigniter用戶指南設置callback_valid_user而不是valid_user

http://codeigniter.com/user_guide/libraries/form_validation.html#callbacks

+0

看來,我必須返回控制器中的函數中的幫助函數,然後在驗證中使用該函數作爲回調函數。我的一些其他幫助者在驗證規則中工作,而不使用'callback_'。我只是直接添加函數名稱。我不知道爲什麼。 – CyberJunkie

+0

也許是因爲CI更新最近發生了變化? – user482594

0
$this->form_validation->set_rules('user_id', 'User ID', 
'required|xss_clean|max_length[11]|is_natural_no_zero|callback_valid_user'); 
//note the callback_          ↑ 
+0

它不是控制器內的回調函數,我在助手文件中有該函數。 – CyberJunkie

+0

你裝過幫手嗎? –