Laravel 4.2刀片:检查是否为空

时间:2014-12-15 14:23:06

标签: php laravel blade

在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>' : '') }}

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

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

更新

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

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

所以,我不想围绕每个$变量(例如$ school-&gt; name)制作一个@if($value != ''){}

6 个答案:

答案 0 :(得分:13)

试试这个:

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

答案 1 :(得分:13)

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

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

答案 2 :(得分: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>" : '' }}

答案 3 :(得分:3)

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

{{ $variable ?? 'default' }}

答案 4 :(得分:1)

{{ isset($variable) ? $variable : 'default' }}

答案 5 :(得分:0)

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

@if($var->isEmpty())
    Do this  
@else
    Do that  
@endif