7

重複の可能性:
1 ページに Codeigniter 2 フォーム、validation_errors 問題

私のページには2つのフォームがあります。一度に 1 つずつ検証する必要がありますが、競合があると思います。ここで見てみましょう:

ここに画像の説明を入力

どちらかのフォームを送信すると、両方とも同じエラー メッセージが表示されます

validation_errors()はメッセージを表示するために使用します。フォームを一度に 1 つずつ検証するにはどうすればよいですか?

ここにコードがあります

public function update_user_info(){ 
    $this->form_validation->set_rules("firstname","First Name","required");     
    $this->form_validation->set_rules("lastname","Last Name","required"); 
    $this->form_validation->set_rules("middlename","Middle Name","required"); 
    if($this->form_validation->run()===false){ 
        //wrong 
    } 
    else { //correct } 
}
4

3 に答える 3

7

私はちょうど問題に遭遇しました。私の解決策は次のとおりです。

1.最初に最初の送信ボタン名を設定します = 'update_info'

2.次に、2番目の送信ボタン名を「change_password」に設定します

3. update_user_info() を最後に変更します。

public function update_user_info(){ 
    if (isset ($_POST['update_info'])) {
        $this->form_validation->set_rules("firstname","First Name","required");     
        $this->form_validation->set_rules("lastname","Last Name","required"); 
        $this->form_validation->set_rules("middlename","Middle Name","required"); 
        if($this->form_validation->run()===false){ 
            //wrong 
        } 
        else { //correct }             
    }
    else if (isset ($_POST['change_password'])){
        form_validation of your change password
    }

これが問題を解決する最も簡単な方法だと思います。

幸運を。

于 2012-10-09T10:50:00.483 に答える
5

フォームごとに 1 つの非表示の入力を取得できます

First Form:
<input type="hidden" name="form" value="form1" />

Second Form:
<input type="hidden" name="form" value="form2" />

コントローラーでは、各フォームのルールの配列を設定できます

$config['form1'] = array(
               array(
                     'field'   => 'username', 
                     'label'   => 'Username', 
                     'rules'   => 'required'
                  ),
               array(
                     'field'   => 'password', 
                     'label'   => 'Password', 
                     'rules'   => 'required'
                  ),
            );

$config['form2'] = array(
               array(
                     'field'   => 'email', 
                     'label'   => 'Email', 
                     'rules'   => 'required'
                  ),
            );

Now check which hidden field posted

$form = $this->input->post('form')


Now you can set rules as below

$this->form_validation->set_rules($config[$form]);

if ($this->form_validation->run()):

    // process form

else:
        $data[$form.'_errors'] = validation_errors();
endif;

ビューファイルに

if (isset($form1_errors)) echo $form1_errors;
if (isset($form2_errors)) echo $form2_errors;
于 2012-10-09T08:52:11.747 に答える