无论我做什么,我似乎无法在我的MY_Form_validation中使用dob函数...请注意_register_verify在我的用户库中,而不是控制器,所以我使用$ CI而不是$ this ... < / p>
<?php
/** application/libraries/MY_Form_validation **/
class MY_Form_validation extends CI_Form_validation
{
public $CI;
function __construct( $config = array() )
{
parent::__construct($config);
log_message('DEBUG', 'MY FORM VALIDATION Initialized!!');
}
// --------------------------------------------------------------------
public function dob($dob)
{
$CI =& get_instance();
$CI->form_validation->set_message('dob[]_check', 'Please enter a valid DOB');
show_error('I AM AN ERROR');
}
这是我的用户库中的功能...
public function _register_verify($testmode = FALSE)
{
if ($testmode) return TRUE;
$CI =& get_instance();
$CI->load->library('form_validation');
$CI->form_validation->CI =& $CI;
$CI->form_validation->set_rules('dob[]', 'DOB', 'trim|dob');
if ($CI->form_validation->run() == FALSE)
{
// What to do if user details are NOT correct?
$CI->session->set_flashdata('dob_error', form_error('dob[]'));
return FALSE;
} else {
return TRUE;
}
}
我尝试扩展MY_Form_validation而没有别的东西,它仍然无法正常工作。我发现的大部分turotials都是从控制器调用form_validation。
我已经检查了日志,并且没有日志消息,也没有显示错误。
编辑:管理以初始化类,但是dob永远不会被调用
答案 0 :(得分:0)
MY_Form_Validation.php中的函数应该返回给出测试结果的布尔值。
public function dob($dob){
//not perfect, but, returns true if date matches 12/10/1999 for example.
return preg_match("/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/", $dob);
}
确保您已将dob设置为控制器或配置文件中的规则,具体取决于您的设置方式:
$this->load->library('form_validation');
$this->form_validation->set_rules('dob', 'date of birth', 'required|dob');
错误在application/language/english/form_validation_lang.php
中处理。添加:
$lang['dob'] = "Oops, wrong DOB format.";
最后,请在您的控制器内运行表单验证,而不是库或模型。 1}}无需拨打get_instance()
并在此用例中分配给$ CI。