2012-05-15 72 views
0

我的自定義函數不起作用。我正在檢查傳遞的值是否不存在於數據庫中,它返回錯誤消息。我做錯了什麼?
控制器功能自定義表單驗證在codeigniter中出錯

function sp_exists($str) 
     { 
      $this->user_model->sp_exists($str); 
      $this->form_validation->set_message('sp_exists', 'The %s field does not exists'); 
     } 

型號功能

function sp_exists($str) 
    { 
     $this->db->where('member_id',$str); 
     $query = $this->db->get('user'); 
     if ($query->num_rows() > 0) 
     { 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
    } 

回調函數

$this->form_validation->set_rules('sponsor_id', 'Sponsor ID', 'trim|required|xss_clean|callback_sp_exists'); 
+0

當前輸出是什麼? – tcole

+0

只是字段空白,但沒有提交表單。 –

+1

你的回調函數根本沒有返回任何東西。 –

回答

5

你看看user guide?它清楚地解釋瞭如何做到這一點。

首先,我想你應該改變模型的功能是:

function sp_exists($str) 
{ 
    $this->db->where('member_id',$str); 
    $query = $this->db->get('user'); 
    return $query->num_rows() > 0; 
} 

而且控制器應該是這樣的:

function sp_exists($str) 
{ 
    if(!$this->user_model->sp_exists($str)) 
    { 
    $this->form_validation->set_message('sp_exists', 'The %s field does not exists'); 
    return FALSE; 
    } 
    else 
    { 
    return TRUE; 
    } 
} 
+0

我做了更改,但仍然無法正常工作。我不會錯誤地加載庫。我無法弄清楚它出了什麼問題。 –

+0

你能否顯示你的表單代碼?什麼不工作?請嘗試描述您提交表單時發生的情況。 – Mischa

+0

對不起,我工作了..我犯了一個語法錯誤 –

0

變化

function sp_exists($str) 
    { 
     $this->user_model->sp_exists($str); 
     $this->form_validation->set_message('sp_exists', 'The %s field does not exists'); 
    } 

function sp_exists($str) 
    { 
     $this->form_validation->set_message('sp_exists', 'The %s field does not exists'); 
     return $this->user_model->sp_exists($str); 
    }