Карточка вне панели в Filament
Давайте покажем карточку вне панели. Имя работника выведем на /workers без экрана просмотра в панели.
Класс WorkerCard.php
реализует HasSchemas
и trait InteractsWithSchemas.
В mount примем модель
работника из маршрута.
Метод infolist свяжет
запись с моделью и добавит
TextEntry для поля
name:
<?php
namespace App\Livewire;
use App\Models\Worker;
use Filament\Infolists\Components\TextEntry;
use Filament\Schemas\Concerns\InteractsWithSchemas;
use Filament\Schemas\Contracts\HasSchemas;
use Filament\Schemas\Schema;
use Illuminate\Contracts\View\View;
use Livewire\Component;
class WorkerCard extends Component implements HasSchemas
{
use InteractsWithSchemas;
public Worker $worker;
public function mount(Worker $worker): void
{
$this->worker = $worker;
}
public function infolist(Schema $schema): Schema
{
return $schema
->record($this->worker)
->components([
TextEntry::make('name'),
]);
}
public function render(): View
{
return view('livewire.worker-card');
}
}
?>
В шаблоне компонента выведем
карточку через infolist:
<div>
{{ $this->infolist }}
</div>
На странице workers.blade.php
передадим работника в Livewire:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Workers</title>
</head>
<body>
@livewire('worker-card', ['worker' => $worker])
</body>
</html>
Покажите карточку одного работника на обычной странице сайта.