【问题标题】:Ternary in Laravel BladeLaravel Blade 中的三元组
【发布时间】:2014-10-06 16:56:02
【问题描述】:

寻找刀片模板的三元运算符

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

似乎无法让它工作

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

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

【问题讨论】:

  • 我们可以在 laravel 刀片中嵌套三元运算符吗,因为它给出了意外的错误'['

标签: laravel ternary-operator blade


【解决方案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 使用“或”运算符处理了相同的问题,当第一个值未设置时,它允许使用默认值,并用“或”分隔。

    【讨论】:

      猜你喜欢
      • 2016-07-01
      • 2020-04-20
      • 1970-01-01
      • 2017-10-03
      • 2021-09-18
      • 2020-08-09
      • 2019-02-08
      • 2022-01-16
      • 2019-03-09
      相关资源
      最近更新 更多