Директива @if
Директива @if в Blade позволяет создавать условные конструкции непосредственно в шаблонах. Она работает аналогично оператору if в PHP, но имеет более удобный синтаксис. Директива принимает выражение, которое вычисляется как булево значение, и в зависимости от результата отображает соответствующий блок кода.
Синтаксис
@if ($condition)
<!-- код, выполняемый если условие истинно -->
@elseif ($anotherCondition)
<!-- код, выполняемый если другое условие истинно -->
@else
<!-- код, выполняемый если ни одно условие не истинно -->
@endif
Пример
Давайте отобразим приветствие в зависимости от статуса пользователя:
@php
$user = auth()->user();
@endphp
@if ($user && $user->isAdmin())
<h1>Добро пожаловать, администратор!</h1>
@elseif ($user)
<h1>Добро пожаловать, {{ $user->name }}!</h1>
@else
<h1>Добро пожаловать, гость!</h1>
@endif
Результат выполнения кода для гостя:
<h1>Добро пожаловать, гость!</h1>
Пример
Проверим, есть ли у пользователя право на редактирование статьи:
@php
$article = App\Models\Article::find(1);
@endphp
<h1>{{ $article->title }}</h1>
<p>{{ $article->text }}</p>
@if ($article->author_id === auth()->id())
<button>Редактировать</button>
@endif
Результат выполнения кода для автора статьи:
<h1>Заголовок статьи</h1>
<p>Текст статьи</p>
<button>Редактировать</button>
Пример
Используем директиву @if для проверки наличия записей в коллекции:
@php
$posts = App\Models\Post::where('active', 1)->get();
@endphp
@if ($posts->count() > 0)
<ul>
@foreach ($posts as $post)
<li>{{ $post->title }}</li>
@endforeach
</ul>
@else
<p>Статьи не найдены.</p>
@endif
Результат выполнения кода, если записи найдены:
<ul>
<li>Первая статья</li>
<li>Вторая статья</li>
</ul>
Пример
Используем вложенные условия для проверки нескольких параметров:
@php
$cartItems = [1, 2, 3];
$isLoggedIn = true;
@endphp
@if (count($cartItems) > 0)
@if ($isLoggedIn)
<p>У вас {{ count($cartItems) }} товаров в корзине.</p>
<button>Оформить заказ</button>
@else
<p>Войдите, чтобы оформить заказ.</p>
@endif
@else
<p>Корзина пуста.</p>
@endif
Результат выполнения кода для авторизованного пользователя с товарами:
<p>У вас 3 товаров в корзине.</p>
<button>Оформить заказ</button>