我正在使用 CodeIgniter。我一直在尝试调试一个不起作用的脚本。
我得出的结论是,当使用
$this->form_validation->run();
(表单验证类)时,在第一个命名调用(例如 $this->form_validation->run(form_1);
)之后,所有后续调用都返回 true。
我正在开发一个多步骤表单,当
$this->form_validation->run(form_1);
正确返回 true 时,$this->form_validation->run(form_2);
错误返回 true。
有人知道为什么吗?是否可以在控制器内的单个函数中保留多个调用,或者是否有特殊的方法? 干杯
codeigniter 的设置方式不允许您使用多个规则进行验证,您可以使用功能来扩展表单助手以对规则进行分组(http://ellislab.com/codeigniter/forums/viewthread/120221 )或者像我在
application/config/form_validation.php
中所做的那样,我只是将多个组组合成自己的一组规则,并引用组合规则的单个规则。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config = array(
"campaign" => array(
array(
"field" => "campaign[title]",
"label" => "campaign title",
"rules" => "trim|required|max_length[255]|xss_clean"
)
),
"user" => array(
array(
"field" => "user_info[email]",
"label" => "email",
"rules" => "trim|required|valid_email|is_unique[user_info.email]|max_length[255]|xss_clean"
)
)
);
$config["campaign_user"] = array_merge($config['campaign'], $config['user']);
兴趣线是最后一条,其中两个规则相结合:
$config["campaign_user"] = array_merge($config['campaign'], $config['user']);
在你的控制器中你只需调用单个规则:
if($this->form_validation->run('campaign_user'))
{
# validation successful
}
请检查您的 set_rules() 函数中是否传递了参数 (form1) 和 (form2)...如果可以,则让您自己的第一个 form_validation 调用返回 FALSE,然后查看对 form_validation 的第二个调用是否仍在返回正确。