Ответ 1
попробуйте следующее:
@if ($value !== '')
{{ HTML::link($value,'some text') }}
@endif
В клипе 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).
попробуйте следующее:
@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 вы можете использовать оператор объединения нулей. Это сокращение для @m0z4rt ответа.
{{ $variable ?? 'default' }}
{{ isset($variable) ? $variable : 'default' }}
Интересно, почему никто не говорил о том, что $variable->isEmpty()
выглядит лучше, чем другие.