• Время чтения ~1 мин
  • 08.07.2022

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.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297