Передача свойства в Livewire
Давайте теперь возьмём страницу профиля. Имя человека уже известно: оно есть в данных страницы и видно в шапке. Ниже нужен отдельный блок приветствия с тем же именем. Если нарисовать его прямо в шаблоне профиля, блок нельзя поставить на другую страницу: текст склеен с остальной разметкой.
При вставке вложенного компонента
можно передать значение атрибутом
вроде :name="$name". Livewire
запишет его в одноимённое публичное
свойство ребёнка, и шаблон ребёнка
будет выводить уже переданное имя.
Давайте соберём профиль на
/profile. Создадим компоненты
Profile и Greeting:
php artisan make:livewire Profile --class
php artisan make:livewire Greeting --class
Давайте добавим маршрут страницы:
<?php
Route::get('/profile', function () {
return view('profile');
});
?>
На странице profile.blade.php
вставим родителя:
<x-layout>
<livewire:profile />
</x-layout>
В классе Profile заведём
свойство имени:
<?php
namespace App\Livewire;
use Livewire\Component;
class Profile extends Component
{
public $name = 'Ann';
public function render()
{
return view('livewire.profile');
}
}
?>
Давайте передадим имя во вложенный
Greeting в шаблоне профиля:
<div>
<livewire:greeting :name="$name" />
</div>
У приветствия объявим такое же свойство и выведем его в шаблоне:
<?php
namespace App\Livewire;
use Livewire\Component;
class Greeting extends Component
{
public $name;
public function render()
{
return view('livewire.greeting');
}
}
?>
В шаблоне выведем переданное имя:
<div>
{{ $name }}
</div>
Создайте компонент User
и вложенный Hello.
Пусть User хранит имя
и показывает его внутри
Hello.