为什么不能将值从控制器传递给视图?该值不为null,但似乎该值未传递到视图页面。为什么?
下面是我的代码:
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,
]);
}
}
<?= $model->Name; ?>
答案 0 :(得分:1)
在您的控制器中,您检索到的集合
型号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,
]);
}
}
<?= $model['Name']; ?>
或者使用全部,您应该遍历模式。 Fr显示所有结果:
foreach( $model AS $key => $value){
echo $value->name;
}
答案 1 :(得分:0)
您应该使用类似于Gii生成的代码:
$model = User::findOne($session['UserID']);
if ($model === null) {
throw new ForbiddenHttpException('You are not authorized to view this page.');
}
它将从数据库中获取User
模型,如果请求的用户不存在,则会引发异常。
one()
或findOne()
不保证它将返回非null,因此您需要自己检查它。
\yii\db\Query()
用于原始查询。它不会返回您的模型。最好的情况是,您将获得一个查询结果作为数组。