我正在使用 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_exist 函数放在我的控制器中,则回调验证有效。我们不能在模型中做到这一点吗?我想让控制器尽可能干净。请帮忙。