rockey329 发表于 2011-5-20 10:41:20

表单验证【回调】的问题

本帖最后由 rockey329 于 2011-5-20 11:53 编辑

原帖:【解决方法见后!】
是不是只能在控制器里才有效?自定义类或者MODEL里都无效?如果我需要在多个控制器里调用该怎么实现?

<?phpif ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Formcheck{

function note_check(){

$CI =& get_instance();//调用Ci

$CI->form_validation->set_message('required', '%s 不能为空');

$CI->form_validation->set_rules('captcha', '验证码', 'required|callback_check_captcha');

}

function check_captcha($str){

$CI =& get_instance();//调用Ci

$captcha = $CI->session->userdata('captcha_word');

if($str !== $captcha){

$CI->form_validation->set_message('check_captcha', '%s 不等于 '.$captcha);
   
return FALSE;

}else{

$CI->form_validation->set_message('check_captcha', '%s 等于 '.$captcha);

return FALSE;

}

}
}



如果用在控制器里是有效的,但是在这个类里无效~~求解~请高手指点

===============================================
问题已经解决,可以通过扩展Form_validation类库实现
举例:

<?phpif ( ! defined('BASEPATH')) exit('No direct script access allowed');
//扩展验证类
class MY_Form_validation extends CI_Form_validation{



function __construct()
    {
      parent::__construct();
    }



function captcha($str) {

$CI =& get_instance();

$captcha = $CI->session->userdata('captcha_word');



if($str !== $captcha){

$CI->form_validation->set_message('captcha', '%s 错误 ');
   
return FALSE;

}else{

return TRUE;

}

}
}



然后 $CI->form_validation->set_rules('captcha', '验证码', 'required|captcha');就可以了


zhouli520 发表于 2011-5-20 11:04:53

在C层写个方法,方法里面调取你自定义类的check方法
回调方法就调你C写的方法
貌似是因为callback_(只能接方法名称)
但是自定义类的引用必须是$this->类名->方法,如果这样接在callback后面就无效了吧.
不是很清楚,一般这种callback我都直接写在控制器里的,你试试看吧

rockey329 发表于 2011-5-20 11:06:44

回复 zhouli520 的帖子

我想也是callback的问题,控制器里是ok的,我主要想在多个控制器里调,不想重复写代码:dizzy:

zhouli520 发表于 2011-5-20 11:10:22

你就试试在控制器里写个调取自定义类的方法,callback你控制器里的这个中间方法试试?

rockey329 发表于 2011-5-20 11:47:41

回复 zhouli520 的帖子

解决了,扩展了Form_validation类库

烟头上的探戈 发表于 2011-11-8 15:25:26

本帖最后由 烟头上的探戈 于 2011-11-8 15:25 编辑

关于 Model 调用为什么失效可以看这里。
http://blog.csdn.net/treesky/article/details/6948077

蓝条 发表于 2011-11-30 11:05:25

mark.
页: [1]
查看完整版本: 表单验证【回调】的问题