Filament Form Builder — это пакет, который можно использовать для построения форм с помощью стека TALL (Tailwind, Alpine.js, Laravel и Livewire). Это означает, что большая часть работы по созданию форм выполняется через компоненты PHP и Livewire.
Вот пример barebones из документации:
<?php
namespace App\Http\Livewire;
use Filament\Forms;
use Illuminate\Contracts\View\View;
use Livewire\Component;
class EditPost extends Component implements Forms\Contracts\HasForms
{
use Forms\Concerns\InteractsWithForms;
public Post $post;
public $title;
public $content;
public function mount(): void
{
$this->form->fill([
'title' => $this->post->title,
'content' => $this->post->content,
]);
}
protected function getFormSchema(): array
{
return [
Forms\Components\TextInput::make('title')->required(),
Forms\Components\MarkdownEditor::make('content'),
// ...
];
}
public function render(): View
{
return view('edit-post');
}
}
Метод getFormSchema()
возвращает массив полей, который включает в себя широкий спектр типов полей:
- Текстовый ввод
- Select
- Multi-select
- Checkbox
- Переключатель
- Радио
- Выбор даты и времени Загрузка
- файлов
- Расширенный редактор
- Markdown Редактор
- Markdown и многое другое...
Поля также могут определять правила проверки для каждой точки данных в форме, такие как обязательные, уникальные, существующие (в базе данных) и многое другое. Вот пример:
Field::make('email')->unique()
Field::make('email')->unique(table: \App\Models\User::class)
Field::make('email')->unique(column: 'email_address')
Вы даже можете создать пользовательские правила проверки с помощью замыканий или классов, как в Laravel. Вы можете использовать этот пакет как автономный пакет с Livewire или как часть панели
администратора Filament TALL StackПерейдите к документации по компоненту формы, чтобы начать работу. Вы можете просмотреть исходный код этого пакета на GitHub.