1

AJAX 呼び出しから codeigniter でフォーム検証ルールを設定する必要があります。呼び出しにより、さまざまなフォーム (1:N) からデータをネストする $_POST 配列が生成され、次の方法で検証ルールを設定します。

$this->form_validation->set_rules($field, $label , $rules);

$_POST 配列は次のようになります。

field1: value1
field2: value2
field3: value3
field4: value4
field5: value5
field6: value6      
id: 86
operation: "add"

明らかに、一部のフォームには名前が衝突する可能性があり、この解決策は信頼できません。

例えば

field1:value1
field1:value2

名前は動的に与えられるので、変更する余裕はありません。

$_POST 配列に値をネストすることにしました。

form: 
    form1: 
           field1: value1
           field2: value2
    form2: 
           field1: value3
           field2: value4
    form3: 
           field1: value5
           field2: value6
id: 86
operation: "add"

しかし今、form_validation は壊れています。

    $this->form_validation->set_rules('form[form1['.fieldN .']', $label   , $rules);

期待どおりに動作しません: 検証できません。Form_validation.php ライブラリを調べると、set_rules の最初のパラメーターは文字列で、その値は配列にすることができますが、配列の配列などの入れ子を深くすることはできません。これを行う方法はありますか?ヒントはありますか?

4

2 に答える 2

2

すべてのフィールドに対して単一の配列を使用してルールを設定する方法については、このリンクを参照してください。

このように、ネストされた配列の同じ配列に異なるフォームのルールを設定できます。

$config['login_form'] = array (
                        array 
                        (
                            'key' => 'email', 
                            'value' => 'Email',
                            'rule' => 'trim|required|valid_email|xss_clean'
                        ),
                        array
                        (
                            'key' => 'passwd', 
                            'value' => 'Password',
                            'rule' => 'trim|required|alpha_numeric|xss_clean'
                        )
                      );
 $config['login_form_error_code_1'] = 'The email or password you entered is incorrect';                       

 $config['add_user_form'] = array(
                            array(
                                    'key' => 'user_email',
                                    'value' => ' User Email',
                                    'rule' => 'trim|required|valid_email|callback_duplicate_user_email_check|xss_clean'
                                    ),
                            array(
                                    'key' => 'user_name',
                                    'value' => 'User Name',
                                    'rule' => 'trim|required|xss_clean'
                                     ),
                            array(
                                    'key' => 'user_phone',
                                    'value'=> 'Mobile',
                                    'rule' => 'trim|required|integer|min_length[10]|max_length[10]|xss_clean'
                                    ),
                            array
                            (
                                    'key' => 'user_password',
                                    'value' => 'Password',
                                    'rule' => 'trim|required|min_length[8]|alpha_numeric|xss_clean'
                            )


    );

これで、同じ配列 $config 内のさまざまなフォームに対するすべてのルールが作成されました。

于 2012-11-26T13:51:28.787 に答える