Php 无法在模型中显示回调验证消息
我正在使用codeigniter 3构建一个简单的登录表单,但我的回调验证消息没有起作用。这是我的密码: LoginForm\u model.phpPhp 无法在模型中显示回调验证消息,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
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函数放入控制器中,则回调验证有效。我们不能用模型来做吗?我想使控制器尽可能干净。请帮忙