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

Многофайловый компонент

Многофайловый компонент в Livewire представляет собой способ организации кода, при котором логика компонента и его представление разделены по разным файлам. Это стандартный подход в Livewire: класс компонента располагается в app/Livewire, а Blade-шаблон - в resources/views/livewire. Такая структура облегчает поддержку и масштабирование проекта.

Структура многофайлового компонента

Многофайловый компонент состоит из двух основных файлов: PHP-класса компонента и Blade-шаблона для его отображения. Названия файлов должны совпадать. Например, для компонента Counter нужны файлы app/Livewire/Counter.php и resources/views/livewire/counter.blade.php.

Создание компонента

Создать многофайловый компонент можно с помощью Artisan-команды:

php artisan make:livewire Counter

Эта команда автоматически создаст оба файла с базовой структурой.

Пример компонента

Создадим компонент счетчика. Класс компонента в файле app/Livewire/Counter.php:

<?php namespace AppLivewire; use LivewireComponent; class Counter extends Component { public $num = 0; public function inc() { $this->num++; } public function render() { return view('livewire.counter'); } } ?>

Шаблон компонента в файле resources/views/livewire/counter.blade.php:

<div> <button wire:click="inc">+</button> <span>{{ $num }}</span> </div>

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

<div> <button>+</button> <span>1</span> </div>

Передача данных в шаблон

В методе render можно передать дополнительные данные в шаблон вторым параметром через массив:

<?php namespace AppLivewire; use LivewireComponent; class Post extends Component { public $title = 'Article'; public $body = 'Text'; public function render() { return view('livewire.post', [ 'fullTitle' => $this->title . ' - site', ]); } } ?>
<div> <h1>{{ $fullTitle }}</h1> <p>{{ $body }}</p> </div>

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

<div> <h1>Article - site</h1> <p>Text</p> </div>

Использование публичных свойств

Все публичные свойства класса автоматически передаются в шаблон и доступны как переменные в Blade:

<?php namespace AppLivewire; use LivewireComponent; class User extends Component { public $name = 'John'; public $age = 25; public function render() { return view('livewire.user'); } } ?>
<div> <p>Name: {{ $name }}</p> <p>Age: {{ $age }}</p> </div>

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

<div> <p>Name: John</p> <p>Age: 25</p> </div>

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

  • метод render,
    который возвращает шаблон компонента
  • класс Component,
    от которого наследуются все компоненты
  • однофайловый компонент SFC,
    который объединяет логику и представление в одном файле
  • функцию Route::livewire,
    которая регистрирует маршрут для full-page компонента
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить