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.');
    }
}