表单验证【回调】的问题
本帖最后由 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');就可以了
在C层写个方法,方法里面调取你自定义类的check方法
回调方法就调你C写的方法
貌似是因为callback_(只能接方法名称)
但是自定义类的引用必须是$this->类名->方法,如果这样接在callback后面就无效了吧.
不是很清楚,一般这种callback我都直接写在控制器里的,你试试看吧 回复 zhouli520 的帖子
我想也是callback的问题,控制器里是ok的,我主要想在多个控制器里调,不想重复写代码:dizzy: 你就试试在控制器里写个调取自定义类的方法,callback你控制器里的这个中间方法试试? 回复 zhouli520 的帖子
解决了,扩展了Form_validation类库 本帖最后由 烟头上的探戈 于 2011-11-8 15:25 编辑
关于 Model 调用为什么失效可以看这里。
http://blog.csdn.net/treesky/article/details/6948077 mark.
页:
[1]