Я использую 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)
Проверка обратного вызова работает, если я помещаю функцию username_exist в свой контроллер. Разве мы не можем сделать это в модели? Хочу сделать контроллер максимально чистым. Пожалуйста, помогите.