Директива unless
Директива unless в шаблонизаторе Blade выполняет
условный вывод, если переданное условие возвращает false.
Она является полной противоположностью директивы if
и позволяет сделать код более читаемым в случаях, когда
нужно вывести что-либо при ложном условии. Первым параметром
передаётся выражение или переменная, которая проверяется
на истинность.
Синтаксис
@unless ($condition)
<!-- Код, который выполнится, если $condition == false -->
@endunless
Пример
Давайте выведем сообщение для пользователя, если он не авторизован в системе:
@unless (auth()->check())
<p>Пожалуйста, войдите в систему.</p>
@endunless
Результат выполнения кода при неавторизованном пользователе:
<p>Пожалуйста, войдите в систему.</p>
А если пользователь авторизован, то блок не выведется и результата не будет.
Пример
Давайте проверим, пуста ли коллекция статей, и выведем соответствующее сообщение:
@unless ($articles->isEmpty())
<h2>Список статей</h2>
@foreach ($articles as $article)
<h3>{{ $article->title }}</h3>
@endforeach
@else
<p>Статей пока нет.</p>
@endunless
Результат выполнения кода с непустой коллекцией:
<h2>Список статей</h2>
<h3>Заголовок статьи 1</h3>
<h3>Заголовок статьи 2</h3>
Результат выполнения кода с пустой коллекцией:
<p>Статей пока нет.</p>
Пример
Пример использования unless с проверкой статуса
пользователя. Выведем административную панель,
если пользователь не является гостем:
@unless (Auth::guest())
<div class="admin-panel">
<h2>Панель администратора</h2>
<p>Добро пожаловать, {{ Auth::user()->name }}</p>
</div>
@endunless
Результат выполнения кода для авторизованного пользователя:
<div class="admin-panel">
<h2>Панель администратора</h2>
<p>Добро пожаловать, John Doe</p>
</div>
Для гостя блок не будет выведен.