2016-08-15 10 views
0

Codeigniterの組み込みフォーム検証ライブラリを使用して電子メール入力フィールドを検証しました。Codeigniterフォームの検証がカスタムコールバック関数と見なされない

これは私の検証ルールである:私はespected道を働いている検証ルールのすべての上に使用している場合

$this->form_validation->set_rules('email', '<b>email</b>', 'trim|htmlspecialchars|required|valid_email'); 

。例えば

:それは示し

  • 入力フィールド空の場合:メールが必要です。
  • ユーザーが有効な電子メールを入力しなかった場合、電子メールが無効であることが示されます。

次に、コールバック関数を追加してカスタムフォーム検証ルールを追加しました。

これは私の修正、検証ルールです:

$this->form_validation->set_rules('email', '<b>email</b>', 'trim|htmlspecialchars|required|valid_email|callback_mail_check'); 

そして、これは私のコールバック関数です:

public function mail_check() { 

     if (!$this->users_model->get_user_by_email_address($this->input->post('email', TRUE))) { 

      $this->form_validation->set_message('mail_check', 'Your <b>email</b> could not be found.'); 
      return FALSE; 

     } else { 
      return TRUE; 
     } 

    } 

私は電子メールのフィールドを充填せずにフォームを送信するか、無効な電子メールを送信する際に、その常にカスタムコールバック関数の検証メッセージを出力しました(電子メールが見つかりませんでした)。

しかし、それは私が望んでいた方法ではありません。

まず、空の値の電子メールフィールドを検証し、その後有効な電子メールのためにそのコールバック関数を検証したいと考えています。

答えて

4

使用している検証ルールは正しいです。ただ、それらは自動的に現在の検証のパラメータを追加

$this->form_validation->set_rules('email', '<b>email</b>', 'required|valid_email|callback_mail_check'); 

コールバック

を必要とされていないいくつかのルールを削除します。あなたはGET/POSTメソッドからそれを読む必要はありません。

public function mail_check($email) 
{ 
    if (!$this->users_model->get_user_by_email_address($email)) { 

     $this->form_validation->set_message(__FUNCTION__, 'Your <b>email</b> could not be found.'); 
     return false; 
    } 
    return true; 
} 
関連する問題