我正在使用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。
任何人都知道为什么?多个调用不能保存在控制器内的单个函数中,还是有特殊方法? 干杯
答案 0 :(得分:3)
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']);
答案 1 :(得分:0)
请检查你的set_rules()函数中是否有传递参数(form1)和(form2).....如果没有问题,那么自己第1次form_validation调用返回FALSE,然后查看第二次调用form_validation是否仍然返回TRUE。