Директива @use
Директива @use позволяет импортировать классы в Blade-шаблон,
аналогично оператору use в обычном PHP-коде. Она принимает
полное имя класса с пространством имён. После импорта вы можете
использовать класс по его короткому имени внутри шаблона.
Это особенно удобно при работе с вспомогательными классами,
фасадами или моделями.
Синтаксис
@use('App\Models\Article')
@use('Illuminate\Support\Str', 'StrAlias')
Первый параметр - полное имя класса. Второй параметр (необязательный) - псевдоним для импортируемого класса.
Пример
Импортируем модель Article и выведем заголовки всех статей:
@use('App\Models\Article')
@php
$articles = Article::where('status', 'published')->get();
@endphp
@foreach ($articles as $article)
<h3>{{ $article->title }}</h3>
<p>{{ $article->description }}</p>
@endforeach
Результат выполнения кода:
<h3>Первая статья</h3>
<p>Описание первой статьи</p>
<h3>Вторая статья</h3>
<p>Описание второй статьи</p>
Пример
Используем псевдоним для класса Str, чтобы сократить его имя:
@use('Illuminate\Support\Str', 'Str')
@php
$name = 'john doe';
$slug = Str::slug($name);
@endphp
<p>Имя пользователя: {{ $name }}</p>
<p>Slug: {{ $slug }}</p>
Результат выполнения кода:
<p>Имя пользователя: john doe</p>
<p>Slug: john-doe</p>
Пример
Импортируем несколько классов одновременно с разными псевдонимами:
@use('App\Models\User')
@use('App\Models\Post', 'BlogPost')
@use('Illuminate\Support\Collection')
@php
$users = User::where('active', true)->get();
$posts = BlogPost::where('published', true)->get();
$combined = Collection::make($posts)->merge($users);
@endphp
<p>Всего записей: {{ $combined->count() }}</p>
Результат выполнения кода:
"Всего записей: 5"