1

我需要通过 AJAX 调用在 codeigniter 中设置表单验证规则该调用生成一个 $_POST 数组,我在其中嵌套来自不同表单 (1:N) 的数据,然后我以这种方式设置验证规则:

$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 回答
2

您可以像这样将数组作为字段名称传递

$this->form_validation->set_rules('options[]', 'Options', 'required');

请参阅在 Codeigniter 的验证类中使用数组的详细文档

于 2012-11-26T14:01:23.053 回答