Laravel 4.2刀片:检查是否为空

Mar*_*ten 19 php laravel blade

在Laravel刀片中,您可以:

{{ $variable or 'default' }}
Run Code Online (Sandbox Code Playgroud)

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

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

{{ ($variable != '' ? $variable : '') }}
Run Code Online (Sandbox Code Playgroud)

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

<a href="{{ $school->website }}" target="_blank">{{ $school->website }}</a>
Run Code Online (Sandbox Code Playgroud)

我试过了:

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

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

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

UPDATE

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

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

所以,我不想@if($value != ''){}围绕每个$变量(如$ school-> name).

sor*_*deh 14

试试这个:

@if ($value !== '')
    {{ HTML::link($value,'some text') }}
@endif
Run Code Online (Sandbox Code Playgroud)


Jef*_*ett 14

在这种情况下,我更喜欢该@unless指令的可读性.

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


lie*_*oes 5

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

改成

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

或相同的代码

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


Raj*_*ara 5

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

{{ $variable ?? 'default' }}
Run Code Online (Sandbox Code Playgroud)