Laravel Blade 中的三元组
Posted
技术标签:
【中文标题】Laravel Blade 中的三元组【英文标题】:Ternary in Laravel Blade 【发布时间】:2014-10-06 16:56:02 【问题描述】:寻找刀片模板的三元运算符
@if(Auth::check()) ? yes : no @endif
似乎无法让它工作
@if(Auth::check()) yes @else no @endif
假设这个例子没有太多内容,只是好奇。
【问题讨论】:
我们可以在 laravel 刀片中嵌套三元运算符吗,因为它给出了意外的错误'[' 【参考方案1】:您可以通过
随意使用它。
Auth::check() ? 'yes' : 'no'
【讨论】:
【参考方案2】:这行得通:
Auth::check() ? 'yes' : 'no'
【讨论】:
如何在其中添加锚点? Auth::check() ? '<a href=#>Logout</a>' : '<a href=login>Login</a>'
按原样打印。
您需要允许转义输入。在 Laravel 4 中使用
,在 Laravel 5 中使用 !! !!
太棒了。虽然我仍然可以在 L5 中使用
,但它似乎不再适用于所有情况。
用于转义输出 - 这是您 99% 的时间应该使用的。当你想要非转义输出时,你应该只使用!! !!
- 这应该非常罕见【参考方案3】:
我知道这个问题是不久前提出的,但这可能会对某人有所帮助。
您现在可以在 Laravel 5 中执行此操作。
$variable or "default"
Laravel 5 Blade Templates
Laravel 5.2 Blade Template
【讨论】:
我怀念在 JS 中做类似的事情,而 php 却抱怨未定义的变量。至少这是对刀片的一个很酷的补充。 仅供参考 - 这将在 Laravel5.5
中删除 - 或者至少不再支持。 Taylor 说要使用 PHP7 支持的 $variable ?? "default"
(5.5 需要)
$variable or "default"
适用于 5 到 5.5.28 可能是它们提供向后兼容性
OR 运算符在 Laravel 5.5+ 中已弃用。采用 ??而是: $foo ?? '什么都没有' 【参考方案4】:
此外,如果您需要打印一些变量的值或者如果它是空的一些默认文本,这里有一个不错的快捷方式?:
$value ?: 'Default Value'
【讨论】:
这与布莱斯回答中所说的“或”相同吗? @KevinRedman 是的,它是一样的,当你不知道是否实际设置了 $value 时,我会说“或”是一种更可取的方式【参考方案5】:对于 Laravel 5 + php7,您应该使用空合并运算符,如 this Laravel News article 中所述,如下所示:
$value ?? "Fallback"
在 null 合并运算符之前,Blade 使用“或”运算符处理了相同的问题,当第一个值未设置时,它允许使用默认值,并用“或”分隔。
【讨论】:
以上是关于Laravel Blade 中的三元组的主要内容,如果未能解决你的问题,请参考以下文章
1+X web中级 Laravel学习笔记——blade模版
将 Laravel Blade 模板与 Vue JS 和事件监听器一起使用
未找到 InvalidArgumentException 视图 [layouts.app]。 Laravel-8 LiveWire-2