我将变量传递给Yii2框架中的index
视图。我有以下代码:
return $this->render('index', array(
'userresult' => $userresult,
'topresult' => $topresult,
'result' => $result
));
如果用户登录,我只需要传递变量$userresult
,因为如果用户未登录,则$userresult
变量不存在。这是我尝试过但我无法运行if
语句:
return $this->render('index', array(
if (!\Yii::$app->user->isGuest) { echo "'userresult' => $userresult"; },
'topresult' => $topresult,
'result' => $result
));
如何实现这一目标?
答案 0 :(得分:3)
其中一种方法:
// Initial array
$params = [
'topresult' => $topresult,
'result' => $result,
];
// Conditionally add other elements to array
if (!\Yii::$app->user->isGuest) {
$params['userresult'] = $userresult
}
return $this->render('index', $params);
将echo
与数组混合显然是错误的。您应该在PHP中了解有关数组的更多信息。
此外,您可以忘记array()
语法,使用较短的变体[]
,因为Yii2需要PHP> = 5.4。
我认为最好通过null
:
return $this->render('index', [
'userresult' => $userresult ?: null,
'topresult' => $topresult,
'result' => $result
]);
然后检查变量是否为null
,或仅查看if ($userresult) { ... }
。我认为在视图中使用isset
会更好。这样,参数号是不变的。