我需要在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
名字是dinamically,所以我不能改变它们。
我选择在$ _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第一个paramer是一个字符串,它的值可以是一个数组,但我无法深入嵌套,例如数组数组。 有办法做到这一点吗?任何提示?
答案 0 :(得分:2)
您可以查看reference此链接,了解如何使用单个数组为所有字段设置规则。
您可以在嵌套数组中为同一数组中的不同表单设置规则,如下所示。
$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中使用不同形式的所有规则。
答案 1 :(得分:2)
您可以将数组作为字段名称传递,如此
$this->form_validation->set_rules('options[]', 'Options', 'required');
引用details documentation在Codeigniter的验证类中使用数组。