1

codeigniter 3 を使用して単純なログイン フォームを作成していますが、コールバック検証メッセージが機能しませんでした。これが私のコードです:

LoginForm_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();
    }
}

ログインフォームの入力を検証するために、コントローラーでそのモデルを使用します

ようこそ.php

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');
    }
}

コールバックの検証は機能しているようですが、メッセージは次のようになります。

フィールド名 Username に対応するエラー メッセージにアクセスできません。(username_exist)

コントローラーに username_exist 関数を配置すると、コールバックの検証が機能します。モデルでそれを行うことはできませんか?コントローラーをできるだけきれいにしたい。助けてください。

4

0 に答える 0