Я пытаюсь войти в систему, и я получаю эту ошибку, которую я не могу понять, почему. Кроме того, я не уверен, могу ли я упомянуть еще 1 вопрос или мне нужно выделить его в другой теме. Если я хочу, чтобы пользователь входил в систему, используя либо имя пользователя, либо адрес электронной почты, как мне это сделать?
Я загрузил сообщение об ошибке здесь
Ошибка кажется в этой строке:
$user = $model->model('username', $this->request->getVar('username'))
->first();
Ниже мой код:
Контроллер
public function login()
{
$data = [];
helper(['form']);
$validation = \Config\Services::validation();
if($this->request->getMethod() == 'post'){
//validations
$rules = [
'username' => 'required',
'password' => 'required|validateUser[username, password]'
];
$errors = [
'password' => [
'validateUser' => 'Username or Password don\'t match'
]
];
if(!$this->validate($rules, $errors)){
$data['validation'] = $this->validator;
}else{
$model = new AccountModel();
$user = $model->model('username', $this->request->getVar('username'))
->first();
$this->setUserMethod($user);
return redirect()->to('account');
}
}
echo view('templates/header', $data);
echo view('account/login');
echo view('templates/footer');
}
Модель
<?php namespace App\Models;
use CodeIgniter\Model;
class AccountModel extends Model{
protected $table = 'users';
protected $allowedFields = [
'username',
'email',
'firstname',
'lastname',
'dob',
'country',
'contact',
'password',
'created_at',
'updated_at',
'created_by'
];
protected $beforeInsert = ['beforeInsert'];
protected $beforeUpdate = ['beforeUpdate'];
protected function beforeInsert(array $data) {
$data = $this->passwordHash($data);
return $data;
}
protected function beforeUpdate(array $data) {
$data = $this->passwordHash($data);
return $data;
}
protected function passwordHash(array $data){
if(isset($data['data']['password']))
$data['data']['password'] = password_hash($data['data']['password'], PASSWORD_DEFAULT);
return $data;
}
}
?>
Надеюсь, кто-то может помочь мне здесь. Заранее спасибо!