Laravel 4.2 blade: проверьте, пусто ли

в Laravel blade Вы можете сделать:

{{ $variable or 'default' }}

это проверит, установлена ли переменная или нет. Я получить некоторые данные из базы данных, и эти переменные всегда равны, поэтому я не могу использовать этот метод.

Я ищу функцию сокращенного "лезвия" для этого:

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

трудно использовать этот кусок или код для этого beacuse, я не знаю, как это сделать со ссылкой или что-то вроде этого:

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

I попробовал:

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

но, это не работает. И я хотел бы сохранить свой код как можно короче;)

может кто-нибудь объяснить это мне?

обновление

Я не использую foreach из-за того, что я получаю один объект (одну школу) из базы данных. Я передал его с моего контроллера на мой взгляд с:

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

Итак, я не хочу делать @if($value != ''){} вокруг каждой переменной $(например, $school - >name).

5 ответов


попробуйте это:

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

Я предпочитаю @unless директива для удобочитаемости в этом обстоятельстве.

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

{{ ($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>" : '' }}

С php 7 Вы можете использовать оператор null coalescing. Это сокращение для ответа @m0z4rt.

{{ $variable ?? 'default' }}

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