CodeIgniter表单验证。多个电话无效

时间:2010-09-08 19:10:55

标签: validation forms codeigniter

我正在使用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。

任何人都知道为什么?多个调用不能保存在控制器内的单个函数中,还是有特殊方法? 干杯

2 个答案:

答案 0 :(得分:3)

设置codeigniter的方式并不适合允许您使用多个规则进行验证,您可以使用函数扩展表单帮助程序以对规则(http://ellislab.com/codeigniter/forums/viewthread/120221)进行分组,或者像我在{{1我简单地将多个组合并到它自己的规则集中,并引用组合规则的单个规则。

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。