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 却抱怨未定义的变量。至少这是对刀片的一个很酷的补充。 仅供参考 - 这将在 Laravel 5.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 中的三元组的主要内容,如果未能解决你的问题,请参考以下文章

laravel框架总结 -- blade模板引擎

1+X web中级 Laravel学习笔记——blade模版

将 Laravel Blade 模板与 Vue JS 和事件监听器一起使用

手把手教你跑Larave框架实战笔记系列之二

未找到 InvalidArgumentException 视图 [layouts.app]。 Laravel-8 LiveWire-2

将数组发送到 Blade 组件(Laravel 8)