Php 无法在模型中显示回调验证消息

Php 无法在模型中显示回调验证消息,php,codeigniter,codeigniter-form-validation,Php,Codeigniter,Codeigniter Form Validation,我正在使用codeigniter 3构建一个简单的登录表单,但我的回调验证消息没有起作用。这是我的密码: LoginForm\u model.php class LoginForm_model extends CI_Model { private $username; private $password; protected $validationRules = [ 'username' => 'required|callback_usernam

我正在使用codeigniter 3构建一个简单的登录表单,但我的回调验证消息没有起作用。这是我的密码:

LoginForm\u model.php

class LoginForm_model extends CI_Model 
{
    private $username;
    private $password;

    protected $validationRules = [
        'username' => 'required|callback_username_exist',
        'password' => 'required',
    ];

    public function username_exist($str)
    {
        $this->load->model('Reseller_model', 'reseller');
        $reseller = $this->reseller->findOne(['username' => $this->input->post('LoginForm')['username']]);
        if (!empty($reseller)) {
            return true;
        }
        $this->form_validation->set_message('username_exist', 'Username tidak ditemukan');
        return false;
    }

    public function validate() {
        $modelName = explode("_", get_class($this));
        foreach($this->validationRules as $field => $validationRule) {
            $this->form_validation->set_rules($modelName[0].'['.$field.']', $this->getLabels($field), $validationRule);
        }

        return $this->form_validation->run();
    }
}
class Welcome extends CI_Controller {

    public function index()
    {
        $this->load->model("Loginform_model", "loginform");

        if (NULL !== $this->input->post('LoginForm')) {

            if ($this->loginform->validate()) {
                echo "All Set!";
            }
        }

        $this->load->view('login');
    }
}
我在控制器中使用该模型来验证登录表单输入

Welcome.php

class LoginForm_model extends CI_Model 
{
    private $username;
    private $password;

    protected $validationRules = [
        'username' => 'required|callback_username_exist',
        'password' => 'required',
    ];

    public function username_exist($str)
    {
        $this->load->model('Reseller_model', 'reseller');
        $reseller = $this->reseller->findOne(['username' => $this->input->post('LoginForm')['username']]);
        if (!empty($reseller)) {
            return true;
        }
        $this->form_validation->set_message('username_exist', 'Username tidak ditemukan');
        return false;
    }

    public function validate() {
        $modelName = explode("_", get_class($this));
        foreach($this->validationRules as $field => $validationRule) {
            $this->form_validation->set_rules($modelName[0].'['.$field.']', $this->getLabels($field), $validationRule);
        }

        return $this->form_validation->run();
    }
}
class Welcome extends CI_Controller {

    public function index()
    {
        $this->load->model("Loginform_model", "loginform");

        if (NULL !== $this->input->post('LoginForm')) {

            if ($this->loginform->validate()) {
                echo "All Set!";
            }
        }

        $this->load->view('login');
    }
}
回调验证似乎有效,但消息如下:

无法访问与字段名用户名对应的错误消息。(用户名\u存在)

如果我将username_exist函数放入控制器中,则回调验证有效。我们不能用模型来做吗?我想使控制器尽可能干净。请帮忙