Laravel Blade中的三元运算符

72

寻找适用于Blade模板的三元运算符

@if(Auth::check()) ? yes : no @endif

似乎无法让它工作

@if(Auth::check()) yes @else no @endif

假设这个例子里面没有太多内容,只是出于好奇。


1
在Laravel Blade中可以嵌套三元运算符吗?由于出现了意外的'['错误。 - Rashmi Jain
7个回答

124

您可以自由地使用它,只需使用{{ }}即可。

{{ Auth::check() ? 'yes' : 'no' }}

63

这个有效:

{{ Auth::check() ? 'yes' : 'no' }}

我该如何在其中添加锚点?{{ Auth::check() ? '<a href=#>Logout</a>' : '<a href=login>Login</a>' }}会原样打印。 - Volatil3
2
你需要允许转义输入。在 Laravel 4 中使用 {{{ }}},在 Laravel 5 中使用 {!! !!} - Laurence
太棒了。虽然我仍然可以在L5中使用 {{}},但似乎它现在不再适用于所有情况。 - Volatil3
2
{{ }} 用于转义输出 - 这是您99%的情况下应该使用的。只有在需要非转义输出时才应使用 {!! !!} - 这应该非常罕见。 - Laurence

31

我很想在JS中本地执行类似的操作,而Php则会抱怨未定义的变量。至少这是Blade的一个很酷的补充。 - Emile Bergeron
7
FYI - 这将在 Laravel 5.5 中被移除,或者至少不再受支持。Taylor 建议使用 {{ $variable ?? "default" }},这是 PHP7 支持的(Laravel 5.5 要求使用 PHP7)。 - Laurence
{{ $variable or "default" }} 在5到5.5.28版本中有效,可能是因为它们提供了向后兼容性。 - Elshan
1
OR运算符在Laravel 5.5+中已被弃用。请使用??代替:{{ $foo ?? 'nothing there' }} - AKOP

22

对于 Laravel 5 + php7,你应该使用空合并运算符,如此 Laravel News 文章中所解释的那样:

{{ $value ?? "Fallback" }}
在空值合并运算符出现之前,Blade使用“or”运算符来处理相同的问题,当第一个值未设置时,它允许使用默认值,并以“or”分隔。-> 在空值合并运算符出现之前,Blade使用“or”运算符来处理相同的问题,当第一个值未设置时,它允许使用默认值,并以“or”分隔。

21

此外,这里有一个不错的快捷方式?:,如果你需要输出某个变量的值或者它为空时输出一些默认文本。

{{ $value ?: 'Default Value' }}

这与Bryce的答案中提到的“或”是一样的吗? - Kevin Redman
1
@KevinRedman 是的,是一样的。我会说当你不知道 $value 是否被设置时,“或”是更可取的方式。 - vitr

1

核心 PHP

if(!empty($mat->getSupplier))    {
echo $mat->getSupplier->supplier_name;
}
else if(!empty($mat->request_plant)    {
echo \App\PlantName::whereId($mat->request_plant)->value('name');
}
else    {
echo $mat->other_supplier;
}

Laravel Blade 文件

 {{ (!empty($mat->getSupplier)) ? $mat->getSupplier->supplier_name : ((!empty($mat->request_plant)) ? \App\PlantName::whereId($mat->request_plant)->value('name'): $mat->other_supplier) }}

0

三元条件看起来像这样: {{ condition ? '是' : '否' }}


3
欢迎来到 Stack Overflow。虽然我们感谢您提供的答案,但如果它在其他答案的基础上提供了额外的价值,那将是更好的。在这种情况下,您的答案没有提供额外的价值,因为另一个用户已经发布了那个解决方案。如果之前的回答对您有帮助,您可以在获得足够的声望后投票支持它。 - Nikolai Kiselev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接