Codeigniter 2-表单验证自定义规则

时间:2019-07-12 08:21:54

标签: php codeigniter validation

我正在使用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。

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
    {
        // ......
    }

很遗憾,程序结构是这样给出的,因此我无法在控制器中找到代码。