Yii2 在非对象上调用成员函数 load()
Yii2 Call to a member function load() on a non-object
我在控制器中有用户的标准代码 class
public function actionEdit($username)
{
...
$model = User::findByUsername($username);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
如果我编辑用户,我会收到错误消息
Call to a member function load() on a non-object
指向$model->load
为什么会这样?
更新
var_dump 在 $model 上显示 NULL
这很奇怪
因为我在视图操作中使用了相同的功能,而且效果很好
public function actionView($username){
$model = User::findByUsername($username);
if($model){
更新2
我做了一些修改现在代码是这样的,没有错误
但逻辑是没有加载和保存,因为如果转到其他部分并再次加载编辑而不是查看。
$model = User::findByUsername($username);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'username' => $model->username]);
} else {
return $this->render('edit', [
'model' => $model,
}
使用
var_dump($model);
看看 $model
到底是什么。可能不是模型,检查函数 findByUsername()
的结果是什么
确保你的功能是检查并找到一个,比如
protected function findByUsername($username)
{
if (($model = User::find()->where(['username' => $username])->one()) !== null) {
return $model;
} else {
throw new NotFoundHttpException('not found.');
}
}
我在控制器中有用户的标准代码 class
public function actionEdit($username)
{
...
$model = User::findByUsername($username);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
如果我编辑用户,我会收到错误消息
Call to a member function load() on a non-object
指向$model->load
为什么会这样?
更新
var_dump 在 $model 上显示 NULL 这很奇怪
因为我在视图操作中使用了相同的功能,而且效果很好
public function actionView($username){
$model = User::findByUsername($username);
if($model){
更新2 我做了一些修改现在代码是这样的,没有错误 但逻辑是没有加载和保存,因为如果转到其他部分并再次加载编辑而不是查看。
$model = User::findByUsername($username);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'username' => $model->username]);
} else {
return $this->render('edit', [
'model' => $model,
}
使用
var_dump($model);
看看 $model
到底是什么。可能不是模型,检查函数 findByUsername()
确保你的功能是检查并找到一个,比如
protected function findByUsername($username)
{
if (($model = User::find()->where(['username' => $username])->one()) !== null) {
return $model;
} else {
throw new NotFoundHttpException('not found.');
}
}