РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1319 of 1392 menu

Команда make:component

Команда make:component создаёт новый компонент Blade в приложении Laravel. Компоненты позволяют инкапсулировать логику и представление в переиспользуемые блоки. При вызове команды необходимо указать имя компонента. По умолчанию компонент создаётся в каталоге app/View/Components, а представление - в resources/views/components. Команда поддерживает создание как анонимных компонентов, так и классовых, а также позволяет указывать вложенную структуру каталогов через точечную нотацию или слеши.

Синтаксис

php artisan make:component ComponentName # С опцией --force для перезаписи существующего компонента php artisan make:component ComponentName --force # Для создания инлайн-компонента php artisan make:component ComponentName --inline # Для создания анонимного компонента php artisan make:component ComponentName --view

Пример

Давайте создадим компонент для отображения карточки статьи. Выполним команду:

php artisan make:component ArticleCard

После выполнения команды будут созданы два файла:

<?php namespace App\View\Components; use Closure; use Illuminate\Contracts\View\View; use Illuminate\View\Component; class ArticleCard extends Component { public function __construct() { // } public function render(): View|Closure|string { return view('components.article-card'); } } ?>
<div> <!-- Article card content --> </div>

Пример

Создадим компонент с передачей данных через конструктор. Компонент будет принимать заголовок и текст статьи:

php artisan make:component ArticleContent
<?php namespace App\View\Components; use Closure; use Illuminate\Contracts\View\View; use Illuminate\View\Component; class ArticleContent extends Component { public string $title; public string $content; public function __construct(string $title, string $content) { $this->title = $title; $this->content = $content; } public function render(): View|Closure|string { return view('components.article-content'); } } ?>
<div class="article"> <h2>{{ $title }}</h2> <p>{{ $content }}</p> </div>

Используем созданный компонент в Blade-шаблоне:

<x-article-content title="Understanding Laravel" content="Laravel is a powerful PHP framework." />

Результат выполнения кода:

<div class="article"> <h2>Understanding Laravel</h2> <p>Laravel is a powerful PHP framework.</p> </div>

Пример

Создадим анонимный компонент без класса-обработчика с помощью опции --view:

php artisan make:component user-profile --view
<div class="profile"> <h3>User Profile</h3> <p>Name: {{ $name ?? 'Guest' }}</p> <p>Email: {{ $email ?? 'N/A' }}</p> </div>

Используем анонимный компонент в представлении:

<x-user-profile :name="$userName" :email="$userEmail" />

Результат выполнения кода при передаче данных:

"User Profile Name: John Doe Email: john@example.com"

Пример

Создадим компонент с вложенной структурой каталогов. Используем точечную нотацию для указания пути:

php artisan make:component admin.dashboard.stats
<?php namespace App\View\Components\Admin\Dashboard; use Closure; use Illuminate\Contracts\View\View; use Illuminate\View\Component; class Stats extends Component { public array $statistics; public function __construct(array $statistics = []) { $this->statistics = $statistics; } public function render(): View|Closure|string { return view('components.admin.dashboard.stats'); } } ?>
<div class="stats-grid"> @foreach ($statistics as $stat) <div class="stat-item"> <span class="label">{{ $stat['label'] }}</span> <span class="value">{{ $stat['value'] }}</span> </div> @endforeach </div>

Используем вложенный компонент в Blade-шаблоне:

@php $stats = [ ['label' => 'Users', 'value' => 150], ['label' => 'Posts', 'value' => 450], ]; @endphp <x-admin.dashboard.stats :statistics="$stats" />

Результат выполнения кода:

<div class="stats-grid"> <div class="stat-item"> <span class="label">Users</span> <span class="value">150</span> </div> <div class="stat-item"> <span class="label">Posts</span> <span class="value">450</span> </div> </div>

Смотрите также

  • команда make-model,
    которая создаёт новую модель Eloquent
  • команда make-controller,
    которая создаёт новый контроллер
  • команда make-request,
    которая создаёт новый класс запроса валидации
  • команда make-middleware,
    которая создаёт новый middleware
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить