Действие вне панели в Filament
Давайте добавим действие вне панели. Кнопку поставим на /workers внутри Livewire-компонента.
Класс WorkerGreet.php
подключит trait
InteractsWithActions
и примет модель работника.
Метод greetAction
вернёт Action::make
с именем greet
и заголовком окна из
поля name:
<?php
namespace App\Livewire;
use App\Models\Worker;
use Filament\Actions\Action;
use Filament\Actions\Concerns\InteractsWithActions;
use Filament\Actions\Contracts\HasActions;
use Filament\Schemas\Concerns\InteractsWithSchemas;
use Filament\Schemas\Contracts\HasSchemas;
use Illuminate\Contracts\View\View;
use Livewire\Component;
class WorkerGreet extends Component implements HasActions, HasSchemas
{
use InteractsWithActions;
use InteractsWithSchemas;
public Worker $worker;
public function mount(Worker $worker): void
{
$this->worker = $worker;
}
public function greetAction(): Action
{
return Action::make('greet')
->label('Greet')
->modalHeading($this->worker->name);
}
public function render(): View
{
return view('livewire.worker-greet');
}
}
?>
В шаблоне выведем кнопку и блок модальных окон Filament:
<div>
{{ $this->greetAction }}
<x-filament-actions::modals />
</div>
На странице workers.blade.php
подключим компонент с работником:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Workers</title>
</head>
<body>
@livewire('worker-greet', ['worker' => $worker])
</body>
</html>
Поставьте на обычной странице кнопку, которая открывает окно с именем работника.