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 ответов
Я предпочитаю @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' }}