php - Yii2 如何使用 isGuest 向 NavBar 项目添加新的临时项目
问题描述
我是 Yii2 的新手,最近下载了该框架的基本应用版本。“main.php”文件中有一段代码:
echo Nav::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => [
['label' => 'Main', 'url' => ['/site/index']],
['label' => 'Countries', 'url' => ['/country/countries']],
['label' => 'About us', 'url' => ['/site/about']],
['label' => 'Contacts', 'url' => ['/site/contact']],
Yii::$app->user->isGuest ? (
['label' => 'Login', 'url' => ['/user/login']]
) : (
'<li>'
. Html::beginForm(['/user/logout'], 'post')
. Html::submitButton(
'Logout(' . Yii::$app->user->identity->username . ')',
['class' => 'btn btn-link logout']
)
. Html::endForm()
. '</li>'
)
]
]);
我想在其中添加这样的注册链接:
Yii::$app->user->isGuest ? (
['label' => 'Login', 'url' => ['/user/login']],
['label' => 'Register', 'url' => ['/user/registration']]
) : (
'<li>'
. Html::beginForm(['/user/logout'], 'post')
. Html::submitButton(
'Logout(' . Yii::$app->user->identity->username . ')',
['class' => 'btn btn-link logout']
)
我知道这种和平的代码是错误的,但我想问,我怎样才能以正确的方式做到这一点?
解决方案
您的尝试不起作用,因为您使用了三元运算符,它只允许 1 个值而不是 2 个值。登录和注册是 2 个数组。
一个可能的解决方案:
// What everybody sees
$items = [
['label' => 'Main', 'url' => ['/site/index']],
['label' => 'Countries', 'url' => ['/country/countries']],
['label' => 'About us', 'url' => ['/site/about']],
['label' => 'Contacts', 'url' => ['/site/contact']],
];
// What only guests see
if (Yii::$app->user->isGuest) {
$items[] = ['label' => 'Registration', 'url' => ['/user/registration']];
$items[] = ['label' => 'Login', 'url' => ['/user/login']];
}
// What logged in users see
else {
$items[] = '<li>'
. Html::beginForm(['/user/logout'], 'post')
. Html::submitButton(
'Logout(' . Yii::$app->user->identity->username . ')',
['class' => 'btn btn-link logout']
)
. Html::endForm()
. '</li>';
}
// Echo your navigation
echo Nav::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => $items,
]);
推荐阅读
- reactjs - 是否可以在 Redux Store 中实现 setTimeout?
- android-layout - 如何实现以下布局?
- sql-server - SQL Server 查询 - 返回包含除数字和其他特定特殊字符以外的字符的列中的值
- python - LDAP - 仅允许组中的用户登录,
- php - 如何修复解析错误:Unexpected Token ;?
- css - 如何将按钮与输入上方和下方的两个标签对齐
- php - 服务器端 recaptcha v2 验证
- python - Selenium - 网页抓取相同内容但略有不同的 xpath 的多个 url
- python - 熊猫索引重命名没有效果
- python - 使用networkx和matplotlib时如何使x和y轴出现?