Передача данных в классы компонентов в Laravel
Можно передавать данные в классы компонентов, используя атрибуты HTML. Давайте для примера сделаем два атрибута:
<x-alert type="error" message="text" />
Давайте теперь получим эти данные в классе компонента. Для этого для начала объявим наши атрибуты свойствами класса компонента:
<?php
namespace App\View\Components;
use Illuminate\View\Component;
class Alert extends Component
{
public string $type;
public string $message;
}
?>
Теперь получим данные атрибутов в конструкторе. Удобно объявить свойства прямо в параметрах (promoted properties):
<?php
namespace App\View\Components;
use Illuminate\View\Component;
class Alert extends Component
{
public function __construct(
public string $type,
public string $message,
) {}
}
?>
Теперь можем сделать что-нибудь с
полученными данными. Например, передадим
их в представление через render:
<?php
namespace App\View\Components;
use Illuminate\Contracts\View\View;
use Illuminate\View\Component;
class Alert extends Component
{
public function __construct(
public string $type,
public string $message,
) {}
public function render(): View
{
return view('components.alert');
}
}
?>
Публичные свойства конструктора сами доступны в представлении. Выведем их:
<div class="alert alert-{{ $type }}">
{{ $message }}
</div>
Передайте в компонент Logo
путь к картинке и ее alt.