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

Полностью страничный компонент

Полностью страничный компонент (full-page component) в Livewire - это компонент, который обрабатывает весь HTTP-запрос и возвращает полноценную HTML-страницу, а не фрагмент. Такой компонент полностью заменяет традиционный контроллер и представление в Laravel. Он позволяет использовать всю мощь Livewire для построения интерактивных страниц.

Особенность полностью страничного компонента заключается в том, что он не требует дополнительного родительского шаблона или лейаута. При обращении к маршруту, связанному с таким компонентом, Livewire автоматически рендерит его шаблон как полную страницу. При этом сохраняется весь функционал Livewire: реактивность, AJAX-запросы, валидация и другие возможности.

Создание полностью страничного компонента

Создадим компонент, который будет отображать страницу с приветствием. Для этого используем Artisan-команду с флагом --full-page:

php artisan make:livewire Welcome --full-page

Эта команда создаст класс компонента и шаблон. В классе компонента определим свойство $message и метод для его обновления:

<?php namespace App\Livewire; use Livewire\Component; class Welcome extends Component { public $message = 'Welcome to Livewire!'; public function updateMessage() { $this->message = 'Hello from full-page component!'; } public function render() { return view('livewire.welcome'); } } ?>
<!DOCTYPE html> <html> <head> <title>Welcome</title> @livewireStyles </head> <body> <div> <h1>{{ $message }}</h1> <button wire:click="updateMessage"> Update </button> </div> @livewireScripts </body> </html>

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

<h1>Hello from full-page component!</h1> <button>Update</button>

Регистрация маршрута

Чтобы компонент стал доступен по определённому URL, зарегистрируем маршрут с помощью метода Route::livewire:

<?php use App\Livewire\Welcome; use Illuminate\Support\Facades\Route; Route::livewire('/welcome', Welcome::class); ?>

Теперь при переходе по адресу /welcome будет отображаться наша полноценная страница, управляемая Livewire.

Передача параметров в маршруте

Полностью страничный компонент может принимать параметры из сегментов URL. Добавим свойство $userId, которое будет заполняться из маршрута:

<?php namespace App\Livewire; use Livewire\Component; class Welcome extends Component { public $userId; public $message = 'Welcome!'; public function mount($userId) { $this->userId = $userId; $this->message = "Welcome, user #$userId!"; } public function render() { return view('livewire.welcome'); } } ?>
<?php use App\Livewire\Welcome; use Illuminate\Support\Facades\Route; Route::livewire('/user/{userId}', Welcome::class); ?>
<!DOCTYPE html> <html> <head> <title>User Profile</title> @livewireStyles </head> <body> <div> <h1>{{ $message }}</h1> <p>User ID: {{ $userId }}</p> </div> @livewireScripts </body> </html>

Результат выполнения кода при переходе по адресу /‌user/42:

<h1>Welcome, user #42!</h1> <p>User ID: 42</p>

Использование лейаута

Полностью страничный компонент может использовать лейаут для единообразного оформления страниц. Для этого в методе render нужно указать имя лейаута:

<?php namespace App\Livewire; use Livewire\Component; class Welcome extends Component { public $message = 'Welcome to Livewire!'; public function render() { return view('livewire.welcome') ->layout('layouts.app'); } } ?>
<!DOCTYPE html> <html> <head> <title>@yield('title', 'App')</title> @livewireStyles </head> <body> <header> <h1>My Site</h1> </header> <main> {{ $slot }} </main> <footer> <p>Footer</p> </footer> @livewireScripts </body> </html>
<div> <h2>{{ $message }}</h2> <button wire:click="updateMessage"> Update </button> </div>

Результат выполнения кода будет представлять собой страницу с шапкой, основным контентом и подвалом. При этом компонент Livewire сохранит всю интерактивность.

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

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