Laravel 4.2刀片:检查是否为空

问题描述 投票:19回答:6

在Laravel刀片中,您可以:

{{ $variable or 'default' }}

这将检查是否设置了变量。我从数据库中获取了一些数据,并且这些变量总是被设置,所以我不能使用这种方法。

我正在寻找一个速记'刀片'功能来执行此操作:

{{ ($variable != '' ? $variable : '') }}

很难使用这篇文章或代码来做这件事,因为我不知道怎么用链接或类似的东西来做:

<a href="{{ $school->website }}" target="_blank">{{ $school->website }}</a>

我试过了:

{{ ($school->website != '' ? '<a href="{{ $school->website }}" target="_blank">{{ $school->website }}</a>' : '') }}

但是,它不起作用。并且,我希望尽可能缩短我的代码;)

有人可以向我解释一下吗?

UPDATE

我没有使用foreach,因为我从数据库中获得了一个对象(一个学校)。我将它从我的控制器传递到我的视图:

 $school = School::find($id);
 return View::make('school.show')->with('school', $school);

所以,我不想在每个$变量周围制作一个@if($value != ''){}(比如$ school-> name)。

php laravel blade
6个回答
14
投票

试试这个:

@if ($value !== '')
    {{ HTML::link($value,'some text') }}
@endif

14
投票

在这种情况下,我更喜欢@unless directive的可读性。

@unless ( empty($school->website) )
    <a href="{{ $school->website }}" target="_blank">{{ $school->website }}</a>
@endunless

5
投票
{{ ($school->website != '' ? '<a href="{{ $school->website }}" target="_blank">{{ $school->website }}</a>' : '') }}

改成

{{ ($school->website != '') ? '<a href="' . $school->website . '" target="_blank">' .  $school->website . '</a>' : '' }}

或相同的代码

{{ ($school->website != '') ? "<a href='$school->website' target='_blank'>$school->website</a>" : '' }}

4
投票

使用php 7,您可以使用null合并运算符。这是@ m0z4rt答案的简写。

{{ $variable ?? 'default' }}

1
投票
{{ isset($variable) ? $variable : 'default' }}

0
投票

我想知道为什么没有人谈论$variable->isEmpty()它看起来比其他更好。可以像:

@if($var->isEmpty())
    Do this  
@else
    Do that  
@endif
© www.soinside.com 2019 - 2024. All rights reserved.