2011-09-25 61 views
0

我正在建立一個註冊系統,並且我遇到了問題。codeigniter set_rules允許更多字符

我想允許點(。)到我的用戶名,但我不能找到一個方法來做到這一點...

這只是我可能要在我的應用程序的順序功能使用,以及一個例子。

這是我走到這一步:

$this->load->library('form_validation'); 

    $this->form_validation->set_rules('username', 'Username', 'trim|required|alpha_numeric|min_length[6]|xss_clean'); 

感謝

回答

3

你必須在你的控制器來創建自己的自定義函數:

class Form extends CI_Controller 
{ 

    function index() 
    {  
     $this->load->library('form_validation'); 

     // 'callback_valid_username' will call your controller method `valid_username` 
     $this->form_validation->set_rules('username', 'Username', 'trim|required|callback_valid_username|min_length[6]|xss_clean'); 

     if ($this->form_validation->run() == FALSE) 
     { 
      // Validation failed 
     } 
     else 
     { 
      // Validation passed 
     } 
    } 

    function valid_username($str) 
    { 
     if (! preg_match('/^[a-zA-Z0-9.]*$/', $str)) 
     { 
      // Set the error message: 
      $this->form_validation->set_message('valid_username', 'The %s field should contain only letters, numbers or periods'); 
      return FALSE; 
     } 
     else 
     { 
      return TRUE; 
     } 
    } 
} 

更多有關自定義驗證功能的信息,請閱讀文檔:

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

+1

如果您需要在多個控制器中使用該方法,則可以擴展Form Validation類。 – birderic