首页 > 解决方案 > 从控制器传递到 Yii 中的视图时,值为 null

问题描述

为什么我不能将值从控制器传递到视图?该值不为null,但似乎该值未传递到视图页面。为什么?

下面是我的代码:

控制器(SiteController.php):

public function actionProfileuser()
{
    $session = Yii::$app->session;

    if($session['UserID'] == null){
        Yii::$app->user->logout();
        return $this->goHome();
    }
    else
    {
        //$model = User::find()->where(['ID'=>$session['UserID']])->all();
        //$model = new User;
        $model = (new \yii\db\Query())
            ->from('tbl_user')
            ->where(['ID' => $session['UserID']])
            ->all();
        return $this->render('profileuser', [
            'model' => $model,
        ]);
    }
}

查看(profileuser.php):

<?= $model->Name; ?>

标签: yii2

解决方案


在您的控制器中,您检索模型集合,all(). 如果您只需要一个,请使用 one():

public function actionProfileuser()
{
    $session = Yii::$app->session;

    if($session['UserID'] == null){
        Yii::$app->user->logout();
        return $this->goHome();
    }
    else
    {
        //$model = User::find()->where(['ID'=>$session['UserID']])->all();
        //$model = new User;
        $model = (new \yii\db\Query())
            ->from('tbl_user')
            ->where(['ID' => $session['UserID']])
            ->one(); // <---------- use one()
        return $this->render('profileuser', [
            'model' => $model,
        ]);
    }
}

查看(profileuser.php):

<?= $model['Name']; ?>

或者使用全部,您应该迭代模式。Fr 显示所有结果:

foreach( $model AS $key => $value){

    echo $value->name;
}

推荐阅读