【问题标题】:Check empty value and output default value in Laravel view / blade template在 Laravel 视图/刀片模板中检查空值并输出默认值
【发布时间】:2018-12-25 07:00:01
【问题描述】:

在 Smarty 模板中,我可以简单地检查一个值,在我的情况下是一个数组,如果为空,我可以输出一个默认值,如下所示:

{$smarty.session.foo['bar']|default:"empty"}

如何在没有嵌套 @if 语句的 laravel Blade 中简单地做同样的事情?

@if(session()->has('foo'))
    @if( ! empty( session('foo')->bar ) )
        {{ session('foo')->bar }}
    @else
       empty
    @endif
@endif

我该如何做这个速记?

【问题讨论】:

  • 在发送到视图之前找出你想要的值
  • 我完全不喜欢视图中的逻辑。一切都应该在发送到视图之前弄清楚。理想的视图只有循环和回声。
  • @delboy1978uk 对于业务逻辑我同意,但检查某些内容是否为空似乎非常适合视图。

标签: php laravel laravel-blade


【解决方案1】:

Blade 有一个使用 OR 的内置结构。

{{ session('foo')->bar OR 'empty' }}

Blade 也接受常规 PHP,因此您可以使用 elvis 运算符跳过任何错误值:

{{ session('foo')->bar ?: 'empty' }}

或使用空值合并运算符跳过空值 (PHP7+)。

{{ session('foo')->bar ?? 'empty' }}

尽管如此,session('foo') 仍然需要返回一个对象。

【讨论】:

  • 如果不是对象怎么办?我认为这是我的主要问题。有些会话只在特殊情况下设置,可以为空。
  • Null-coalescing 应该适用于非对象,但我不相信其他两个示例。他们会发布访问非对象属性的通知。
猜你喜欢
  • 2017-08-07
  • 2017-08-14
  • 2016-11-20
  • 2014-06-13
  • 2013-06-03
  • 2020-11-16
  • 1970-01-01
  • 2015-12-15
  • 2018-12-09
相关资源
最近更新 更多