codeigniter-4 - Codeigniter 4 BadMethodCallException
问题描述
我正在尝试进行用户登录,但我收到了这个错误,我不知道为什么。另外,我不确定我是否可以再提到 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;
}
}
?>
希望有人可以在这里帮助我。提前致谢!
解决方案
所以你有这条线试图调用一个不存在的名为模型的方法......
这就是你所拥有的...
$user = $model->model('username', $this->request->getVar('username'))
->first();
如果您已阅读 CodeIgniter 用户指南,您会发现您确实想使用where
模型而不是模型......也许是因为模型卡在了您的脑海中,因为有时会发生这种情况。
$user = $model->where('username', $this->request->getVar('username'))->first();
看看这对你来说如何。
推荐阅读
- apache-kafka - 使用一些配置创建 Apache Kafka docker 镜像
- javascript - React 组件已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头
- javascript - 有没有办法在 JavaScript 承诺中定义默认错误回调?
- amazon-web-services - SSM 参数存储 - 如何动态选择我需要访问的参数版本
- vb.net - my.resource 中的所有图片都已删除
- r - 如何授予我的 RStudio 服务器“sudo”访问权限?
- c++ - ifstream 不读取第一行
- java - 重载 Java 类构造函数
- node.js - heroku 应用程序错误,应用程序崩溃 Node.js
- laravel - Laravel 中的函数 rules()、store() 和 update()