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