Директива includeWhen
Директива includeWhen используется в Blade-шаблонах
для условного подключения других представлений. Первым
параметром передаётся условие (булево значение или
переменная), вторым - имя подключаемого шаблона,
третьим (необязательным) - массив данных для передачи
в подключаемый шаблон. Если условие истинно,
происходит подключение указанного представления.
Синтаксис
@includeWhen($condition, 'view.name', ['key' => 'value'])
Пример
Давайте подключим шаблон 'partials.menu' только если
переменная $showMenu равна true:
@php
$showMenu = true;
@endphp
@includeWhen($showMenu, 'partials.menu')
<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
Результат выполнения кода:
<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
Пример
Давайте передадим данные в подключаемый шаблон и подключим его только если есть пользователь:
@php
$user = ['name' => 'John', 'age' => 30];
$isLoggedIn = true;
@endphp
@includeWhen($isLoggedIn, 'partials.profile', ['user' => $user])
<div class="profile">
<p>Name: {{ $user['name'] }}</p>
<p>Age: {{ $user['age'] }}</p>
</div>
Результат выполнения кода:
<div class="profile">
<p>Name: John</p>
<p>Age: 30</p>
</div>
Пример
Давайте используем выражение в качестве условия и подключим шаблон если массив не пуст:
@php
$items = [1, 2, 3, 4, 5];
@endphp
@includeWhen(count($items) > 0, 'partials.list', ['items' => $items])
<ul>
@foreach ($items as $item)
<li>{{ $item }}</li>
@endforeach
</ul>
Результат выполнения кода:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
Пример
Давайте используем директиву в контроллере для передачи данных в представление:
<?php
namespace AppHttpControllers;
class ArticleController extends Controller
{
public function index()
{
$articles = ['article 1', 'article 2', 'article 3'];
$showArticles = true;
return view('index', [
'articles' => $articles,
'showArticles' => $showArticles
]);
}
}
?>
@includeWhen($showArticles, 'partials.articles', ['articles' => $articles])
@foreach ($articles as $article)
<p>{{ $article }}</p>
@endforeach
Результат выполнения кода:
<p>article 1</p>
<p>article 2</p>
<p>article 3</p>