我正在使用Codeigniter 2.2.5和PHP 5.6
我想用codeiginter函数验证用户输入。这是正常的方式:
$this->form_validation->set_rules('mail', 'E-Mail', 'required|trim|xss_clean|strip_tags');
在这里,我想添加一个功能来检查电子邮件地址是否包含在已定义的列表中。
有一个用于自定义规则的回调函数,但这仅在控制器类中有效。我在第三方图书馆上课。
喜欢
$this->form_validation->set_rules('username', 'Username', 'callback_username_check');
有人对如何使用CodeIgniter 2实现此想法有什么想法,还是我必须自己检查并创建自定义错误消息?
我知道CodeIgniter 3中有新功能,但是不幸的是,我必须使用CodeIgniter 2。
答案 0 :(得分:0)
在codeigniter 2中,无法从控制器外部使用回调方法。因此,如果您是在库中或模型中,则必须采取解决方法。
您应该做的是在初始化模型/库之前先加载一个辅助函数。然后将其视为普通的PHP函数,而不是“回调”。
赞:
$this->form_validation->set_rules('username', 'Username', 'username_check');
username_check
是您在帮助器中加载的功能。
无论如何,数据处理和数据验证之间是有区别的。验证仅应在控制器中进行。因此,您可能必须重构代码。从长远来看,这将为您提供帮助。
答案 1 :(得分:0)
@Pedro Martins
谢谢。我创建了一个帮助器类并实现了检查功能。该函数已正确调用,并且要检查的值通过了它。在我的检查函数中,如果值确定,则返回TRUE,否则返回FALSE。
LibraryCode:
$this->form_validation->set_rules('mail', 'E-Mail', 'checkMail');
助手类:
function checkMail($value)
{
if($value == ".....") //if clause works correctly
{
return TRUE;
}
else
{
return FALSE;
}
}
但是,无论我的自定义帮助程序检查函数返回什么,表单验证功能始终返回TRUE。
$this->form_validation->set_rules('mail', 'E-Mail', 'checkMail');
//if form validation false -> show form again
if ($this->form_validation->run() == FALSE)
{
// ...... is never triggered
}
else //if form validation success, proceed
{
// ......
}
很遗憾,程序结构是这样给出的,因此我无法在控制器中找到代码。