【问题标题】:Callback Function Error ( Unable to access an error message corresponding to your field name )回调函数错误(无法访问与您的字段名称对应的错误消息)
【发布时间】:2026-01-22 19:55:01
【问题描述】:

我是 Codeigniter 的新手。当我尝试检查电子邮件是否存在时出现错误。我在 * 和其他网站上看到了很多帖子。我无法得到任何结果。

当我尝试使用以下编码时,出现以下错误

无法访问与您的字段名称对应的错误消息 电子邮件。(email_check)

请检查我的代码。

控制器

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Main extends CI_Controller {

    public function index()
    {
        $this->login();
    }
    public function login()
    {
        $this->load->view('login');

    }
    public function login_validation()
    {
        $this->load->library('form_validation');

        $this->form_validation->set_rules("email","Email","required|trim|callback_email_check");
        $this->form_validation->set_rules("password","Password","required|md5|trim|callback_password_check");

        if($this->form_validation->run())
        {
            redirect('main/members');
        }
        else
        {
            $this->load->view('login');
        }
    }
    public function members()
    {
        $this->load->model('model_users');
        if($this->model_users->can_log_in())
        {
            return true;
        }
        else
        {
            $this->form_validation->set_message('email_check', 'Incorrect Username/Password');
            return false;
        }       
    }
}

型号

<?php

class Model_users extends CI_Model
{
    public function can_log_in()
    {       
        $this->db->where->('email',$this->input->post('email'));
        $this->db->where->('password',md5($this->input->post('password')));

        $query = $this->db->get('users');

        if($query->num_rows == 1)
        {
            return true;
        }
        else
        {
            return false;
        }

    }   
}

?>

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    您必须添加您正在使用的 2 个回调函数:

    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');
    
    class Main extends CI_Controller {
    
        public function index()
        {
            $this->login();
        }
        public function login()
        {
            $this->load->view('login');
    
        }
        public function login_validation()
        {
            $this->load->library('form_validation');
    
            $this->form_validation->set_rules("email","Email","required|trim|callback_email_check");
            $this->form_validation->set_rules("password","Password","required|md5|trim|callback_password_check");
    
            if($this->form_validation->run())
            {
                redirect('main/members');
            }
            else
            {
                $this->load->view('login');
            }
        }
    
        public function email_check(){
            //perform your validation here
            if({your_validation_result}){
               return true;
            }else{
               $this->form_validation->set_message('email_check', 'Incorrect Username/Password');
            return false;
            }
        }
    
        public function password_check(){
                //perform your validation here
                if({your_validation_result}){
                   return true;
                }else{
                   $this->form_validation->set_message('password_check', 'Incorrect Username/Password');
                return false;
                }
         }
    
    
    
    
        public function members()
        {
            $this->load->model('model_users');
            if($this->model_users->can_log_in())
            {
                return true;
            }
            else
            {
                $this->form_validation->set_message('email_check', 'Incorrect Username/Password');
                return false;
            }       
        }
    }
    

    【讨论】:

      【解决方案2】:

      我相信您缺少回调函数 email_check,并且那里的 set_message 应该对应于函数而不是字段本身。

      【讨论】:

      • 是的,先生。但是当我改变这个时,我在 model_users.php 的第 7 行出现错误
      • 因为您应该将字符串从输入字段传递给回调函数。 IE。 public function email_check($str) {/* some code here */}。再次检查docs
      最近更新 更多