2017-04-27 3 views
0

2つのフォーム(login/register)を持つビューで検証を行っています。form_validation.phpで各フォームの設定配列を分割して一度にすべてのエラーを表示しないようにする方法 - CodeIgniter

私はissetメソッドを使用して、どのフォームが送信されたかを確認し、それに応じて検証を実行しています。でも、これらのコードと

コントローラ機能ログイン

public function login(){ 

    if (isset ($_POST['btnSignIn']))  
    {   
    if($this->form_validation->run() == FALSE) { 
     // do tasks 
    } 
} 

コントローラ機能レジスタ

public function register(){ 

    if (isset ($_POST['btnSignUp']))  
    {   
    if($this->form_validation->run() == FALSE) { 
     // do tasks 
    } 
} 

代わりに、いずれかの形態の両方のフォームが表示され、エラーを提出。

しかし、私は両方のフォームのすべてのコントロールでform_validation.phpで初期化されたconfig配列を持っています。

これらのコントロールを構成アレイから削除することは、エラーの表示を止めることができる唯一の方法ですが、表示されることはありません。

私の質問は、メッセージを適切に表示するために、これを実装して設定アレイまたは検証を実装する方法はありますか?

私の問題がはっきりしていることを願っています。

何か助けていただければ幸いです。

+0

http://stackoverflow.com/questions/5802729/codeigniter-2-formsを使用する必要があります-on-one-page-validation-errors-problemそれを確認してください –

+0

@AhmedGinani私はあなたが私の質問を誤解していると信じています。私のコードでは、どのフォームが送信されたのかを識別できますが、すべてのコントロールがグローバルなform_validation.phpで初期化されているため、両方のフォームでエラーが表示された後でも、 FYI - この質問を投稿する前にあなたのソリューションを試しました –

答えて

0

これは私がそれを働かせた方法です。

CodeIgniterのドキュメントに記載されています。 https://www.codeigniter.com/userguide3/libraries/form_validation.html#saving-sets-of-validation-rules-to-a-config-file

これは、フォームごとに設定配列で初期化されたコントロールを分離する方法です。

$config = array(
    'signup' => array(
      array(
        'field' => 'username', 
        'label' => 'Username', 
        'rules' => 'required' 
      ), 

    ), 
    'email' => array(
      array(
        'field' => 'emailaddress', 
        'label' => 'EmailAddress', 
        'rules' => 'required|valid_email' 
      ), 
      a 
    ) 
); 

とコントローラで検証を実行している間、私たちは

$this->form_validation->run('signin') 
// this will run validation only for controls initialized under signin array 

代わりの

$this->form_validation->run() 
// this will run validation only for all controls 
関連する問題