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

Атрибут Layout

Атрибут #[Layout] в Livewire используется для указания основного макета (layout), в который будет рендериться компонент. Атрибут применяется к классу компонента и принимает имя шаблона макета в качестве параметра. По умолчанию Livewire использует макет, указанный в конфигурации, но с помощью этого атрибута можно переопределить его для конкретного компонента.

Синтаксис

<?php use Livewire\Attributes\Layout; use Livewire\Component; #[Layout('layouts.app')] class UserProfile extends Component { // ... } ?>

Пример

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

<?php namespace App\Livewire; use Livewire\Attributes\Layout; use Livewire\Component; #[Layout('layouts.admin')] class UserProfile extends Component { public $name = 'John Doe'; public $email = 'john@example.com'; public function render() { return view('livewire.user-profile'); } } ?>
<!DOCTYPE html> <html> <head> <title>Admin Panel</title> </head> <body> <div id="admin-menu"> <!-- Admin navigation --> </div> <div id="content"> {{ $slot }} </div> </body> </html>
<div> <h1>User Profile</h1> <p>Name: {{ $name }}</p> <p>Email: {{ $email }}</p> </div>

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

<div id="admin-menu"> <!-- Admin navigation --> </div> <div id="content"> <div> <h1>User Profile</h1> <p>Name: John Doe</p> <p>Email: john@example.com</p> </div> </div>

Пример

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

<?php namespace App\Livewire; use Livewire\Attributes\Layout; use Livewire\Component; #[Layout('layouts.dashboard')] class Dashboard extends Component { public $stats = [ 'users' => 150, 'orders' => 45, 'revenue' => 12000 ]; public function render() { return view('livewire.dashboard') ->with('pageTitle', 'Dashboard'); } } ?>
<!DOCTYPE html> <html> <head> <title>{{ $pageTitle ?? 'Default Title' }}</title> </head> <body> <header> <h1>Dashboard</h1> </header> <main> {{ $slot }} </main> </body> </html>
<div> @foreach ($stats as $key => $value) <div> <strong>{{ ucfirst($key) }}:</strong> {{ $value }} </div> @endforeach </div>

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

<div> <div> <strong>Users:</strong> 150 </div> <div> <strong>Orders:</strong> 45 </div> <div> <strong>Revenue:</strong> 12000 </div> </div>

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

  • атрибут #[Title],
    который устанавливает заголовок страницы для компонента
  • атрибут #[Url],
    который синхронизирует свойство компонента с параметрами URL
  • атрибут #[Session],
    который сохраняет свойство компонента в сессии
  • атрибут #[Computed],
    который кеширует результат выполнения метода компонента
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить