用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1897|回复: 2
收起左侧

form_validation callbacks 问题

[复制链接]
发表于 2012-7-5 20:58:44 | 显示全部楼层 |阅读模式
Codeigniter 的 form_validation, form_error 或 validation_errors 会在同一个时候出现多个错误提示。

例如我有一个表单,里有两个fields, 如果两个fields空的话代, error 会出现  "fields_1 is required", "fields_2 is required"

我想要的是 fields_1 and fields_2 are required.

是不是要用callback?

可是要怎么写,有没有任何教学呢?
发表于 2012-7-6 01:03:21 | 显示全部楼层
你的需求callback满足不了。提示不能按你自定义的方式组合。只能改源码了。
发表于 2012-7-6 02:02:33 | 显示全部楼层
本帖最后由 sdink 于 2012-7-6 02:06 编辑

先run进行验证,记得两个都不要加required,run()返回的值先存起来,然后在取出两个值在做验证,有两个方法。
PHP复制代码
$this->load->library ( 'form_validation' );
$val = $this->form_validation;
$val->set_rules ( 'fields_1', 'fields_1', 'trim|xss_clean' );
$val->set_rules ( 'fields_2', 'fields_2', 'trim|xss_clean' );/*********
$val->set_rules ( '*', '*', 'trim|required|xss_clean' );
************/

$run=$val->run ();
$fields_1=$val->set_value ( 'fields_1' );
$fields_2=$val->set_value ( 'fields_2' );
/*****
$fields_1 、$fields_2想咱样?
if(){
        在这里终结,不然会执行后面的(最简单的如 return true/false,或是重定URL)
}
****/

 
/**
OK 上面没问题。现在来验证CI
**/

if($run == false ){
        /***
        我的个去,        CI验证没通过。自己去显示CI的validation_errors
        有的时候你可能想到要用CI的form_error 来显示错误,但是你会遇到一些情况
        1 fields_1和fields_2本来就在 CI validation里通过,无法用form_error得到
        2 你想独立设置form_error信息,但是你已经run()过了,
        接下来你会不会考虑独立设置form_error信息后在run()在一次呢?
        在这里终结,不然会执行后面的(最简单的如 return true/false,或是重定URL)
        ****/

}
$data['fields_1']=$val->set_value ( 'fields_1' );
$data['fields_2']=$val->set_value ( 'fields_2' );
 
/****
更新啊 插入啊 你随便
****/

 
复制代码



本版积分规则