Yii2在非对象上调用成员函数load()

时间:2017-04-13 07:38:40

标签: post yii2 load

我在User类的控制器中有标准代码

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

为什么?

更新

$ model上的var_dump显示为NULL 这很奇怪

因为我在视图操作中使用了相同的功能并且它完美地运行

public function actionView($username){
    $model = User::findByUsername($username);
   if($model){

UPDATE2 我已经做了一些更改,现在代码是这样的,没有错误 但是逻辑上没有加载和保存,导致如果转到其他部分又编辑加载而不是查看。

$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,
}

2 个答案:

答案 0 :(得分:1)

使用

var_dump($model);

要了解什么是$model。可能它不是模型,检查函数findByUsername()

的结果

答案 1 :(得分:0)

确保您的功能正在检查并找到一个,例如

protected function findByUsername($username)
{
    if (($model = User::find()->where(['username' => $username])->one()) !== null) {
        return $model;
    } else {
        throw new NotFoundHttpException('not found.');
    }
}