[英]Shorthand if in PHP Array
Shorthand if in a PHP array won't work, even if I surround the true in braces. 即使在括号中包含true,也无法在PHP数组中使用速记。
The working code: 工作代码:
echo Nav::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => [
Yii::$app->user->isGuest ?
['label' => 'Login', 'url' => ['/site/login']] :
[
'label' => 'Logout (' . Yii::$app->user->identity->username . ')',
'url' => ['/site/logout'],
'linkOptions' => ['data-method' => 'post']
],
],
]);
The not working code: 不起作用的代码:
echo Nav::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => [
Yii::$app->user->isGuest ?
(['label' => 'Registrieren', 'url' => ['/site/register']],
['label' => 'Login', 'url' => ['/site/login']]) :
[
'label' => 'Logout (' . Yii::$app->user->identity->username . ')',
'url' => ['/site/logout'],
'linkOptions' => ['data-method' => 'post']
],
],
]);
I understand what the problem is, but can't figure out a workarround for it. 我知道问题出在哪里,但无法解决。 Any ideas? 有任何想法吗?
You have to have have each part of the code evaluate to something legal - this is not legal: 您必须让代码的每个部分都评估为合法-这是不合法的:
Yii::$app->user->isGuest ?
(['label' => 'Registrieren', 'url' => ['/site/register']],
['label' => 'Login', 'url' => ['/site/login']])
because it would evaluate to 因为它将评估为
['label' => 'Registrieren', 'url' => ['/site/register']],
['label' => 'Login', 'url' => ['/site/login']]
that would only be valid if their were another set of []
around the whole thing - for example, you could not do: 仅当它们在整个事情上都是另一套[]
时才有效-例如,您不能这样做:
$x = ['label' => 'Registrieren', 'url' => ['/site/register']],
['label' => 'Login', 'url' => ['/site/login']];
but you could do 但是你可以做
$x = [
['label' => 'Registrieren', 'url' => ['/site/register']],
['label' => 'Login', 'url' => ['/site/login']]
];
Your code needs to be more like 您的代码需要更像
echo Nav::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => Yii::$app->user->isGuest ?
[
['label' => 'Registrieren', 'url' => ['/site/register']],
['label' => 'Login', 'url' => ['/site/login']]
] :
[
[
'label' => 'Logout (' . Yii::$app->user->identity->username . ')',
'url' => ['/site/logout'],
'linkOptions' => ['data-method' => 'post']
]
]
]);
This line looks wrong: 这行看起来是错误的:
(['label' => 'Registrieren', 'url' => ['/site/register']]
You have one opening brace '(' but two closing ']' braces, you probably want to remove one of those 您有一个右括号“(”,但有两个右括号“]”,您可能想删除其中一个
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.