2011-05-30 51 views
0

我正在學習CI,因爲我們正在講話,並且我對你們有個快速的問題。我目前使用form_validation函數來幫助我進行一些快速驗證。這工作正常,但!如果我想驗證已經在使用的用戶名或電子郵件,我該怎麼做?Codeigniter表單驗證(mysql檢查)

我在猜測,我需要一個模型和一個方法來檢查用戶名或電子郵件是否已被使用。但我怎麼能結合form_validation錯誤消息給出的假/真結果?

回答

4

更多關於它的CI中的驗證系統支持回調,這允許你擴展驗證類以滿足你的需要,例如:

在你的控制,改變「用戶名」的規則是:

$this->form_validation->set_rules('username', 'Username', 'callback_username_check'); 

然後在你的控制器,你可以添加一個功能叫做 「username_check」:

function username_check($str) 
{ 
    $this->load->model('your_model'); 

    if ($this->your_model->checkUsername($str)) 
    { 
     return true; 
    } 
    else 
    { 
     $this->form_validation->set_message('username_check', 'The username %s already exist');    
     return false; 
    } 

而在你的型號中:

function checkUsername($username) 
{ 
    $this->db->where('username', $username); 
    $query = $this->db->get('users'); 
    if ($query->num_rows() > 0){ 
     return true; 
    } 
    else{ 
     return false; 
    } 
} 

再見!!

+0

我做到了,但是當我這樣做,我只是得到一個空白頁面,但如果我刪除返回false,一切正常(但我沒有得到任何錯誤)上提交。 – Dexty 2011-05-31 21:09:04

+0

你可以在這裏寫代碼嗎? – 2011-05-31 23:48:08

+0

修好了,對不起。我在索引函數中有我的函數,看起來好像該睡覺了!無論如何感謝m8! – Dexty 2011-06-01 02:04:31