【问题标题】:Codeigniter 3 validation run always returns false when the callback method returns TRUE当回调方法返回 TRUE 时,Codeigniter 3 验证运行总是返回 false
【发布时间】:2021-03-13 07:10:15
【问题描述】:

我在使用 Codeigniter 的表单验证时遇到了一个问题,我不知道这是什么原因。任何形式的帮助将不胜感激

这是登录验证组:

    "login" => array
    (
        array
        (
            "field" => "email_address",
            "label" => "Email address",
            "rules" => array("exists", array($CI->UsersModel, "emailExists"))
        ),
    )

这是来自 UsersModel 类的方法:

    public function emailExists($value)
    {
        $check = $this->db->select("email_address")->from("users")->where("email_address", $value)->get()->row();

        if ($check != NULL)
        {
            return TRUE;
        }
        return FALSE;
    }

我在这里调用run方法:

            if ($this->form_validation->run("login") == FALSE)
            {
                
            }

如果在数据库中找到电子邮件地址,即使 emailExists 方法返回 TRUE,此条件也始终返回 false。

【问题讨论】:

    标签: php forms validation codeigniter-3


    【解决方案1】:

    像这样修改你的代码:

    $rules = array
        (
            array
            (
                "field" => "email_address",
                "label" => "Email address",
                "rules" => array("exists", array($CI->UsersModel, "emailExists"))
            ),
        );
    

    在运行验证之后和之前添加这一行:

    $this->form_validation->set_rules($rules);

    并使用run() 函数验证表单不带任何参数:

    if ($this->form_validation->run() == FALSE)
    {
                    
    }
    

    更新:

    "rules" => array("exists", array($CI->UsersModel, "emailExists")) 无效!Rules 必须是一个字符串,其中包含由管道分隔的规则列表!示例:

    "rules" => 'trim|required|min_length[5]|max_length[12]'

    【讨论】:

    • 仍然是相同的结果,除此之外我想将规则保留在配置文件中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 1970-01-01
    相关资源
    最近更新 更多