Pluginify

Masuk Daftar
Home > Blog > Laravel > Mengenal Konsep Custom Form Fields pada Laravel Filament

Mengenal Konsep Custom Form Fields pada Laravel Filament

Mengenal Konsep Custom Form Fields pada Laravel Filament

Dalam pengembangan dashboard admin menggunakan Laravel Filament, kebutuhan form sering kali tidak hanya sebatas input teks, checkbox, atau dropdown standar. Di sinilah peran Custom Form Fields menjadi penting, karena memungkinkan developer membangun elemen form khusus untuk memenuhi kebutuhan bisnis yang kompleks dan interaktif.

Fitur Custom Form Fields memberikan fleksibilitas tinggi dalam mengembangkan komponen form yang berbeda dari komponen bawaan Filament. Dengan adanya dukungan ini, developer dapat membuat komponen UI yang lebih kaya seperti input warna, selector berbasis API, multi uploader, dynamic repeater, hingga widget khusus sesuai spesifikasi aplikasi.


Apa Itu Custom Form Fields?

Secara definisi, Custom Form Fields adalah komponen form yang dikembangkan oleh developer di luar komponen bawaan Filament. Komponen ini dibuat menggunakan struktur khusus dengan pendekatan class-based dan view blade, sehingga dapat dimanfaatkan kembali di berbagai Resource.

Tujuan utama penggunaan Custom Form Fields antara lain:

  • Menambahkan form komponen yang tidak tersedia secara default
  • Mengintegrasikan UI library pihak ketiga (mis. Select2, Flatpickr, Filepond)
  • Membuat input yang interaktif dan dinamis
  • Menerapkan rule validasi khusus
  • Menstandarkan komponen UI dalam proyek besar

Komponen Form Bawaan Filament (Default)

Sebelum masuk ke custom, Filament sudah menyertakan banyak komponen bawaan seperti:

  • TextInput
  • Textarea
  • Select
  • Toggle
  • Checkbox
  • DatePicker
  • TimePicker
  • RichEditor
  • FileUpload
  • Repeater
  • dan lainnya…

Namun, ketika kebutuhan UI semakin spesifik, Custom Fields menjadi solusi terbaik.


Struktur Dasar Custom Form Field

Pembuatan custom field umumnya terdiri dari:

  1. Kelas PHP komponen
  2. View Blade sebagai tampilan
  3. Registrasi komponen
  4. Pemanggilan dalam Resource

Contoh Implementasi Custom Form Field

Misalkan kita ingin membuat input khusus untuk memilih warna (color picker).

1. Buat Kelas Komponen

Buat class seperti:

namespace App\Forms\Components;

use Filament\Forms\Components\Field;

class ColorPicker extends Field
{
    protected string $view = 'forms.components.color-picker';
}

Kelas di atas mendefinisikan bahwa komponen ini adalah Field dan akan menggunakan view tertentu.


2. Buat View Blade

Buat file:

resources/views/forms/components/color-picker.blade.php

<x-filament::input.wrapper>
    <input
        type="color"
        wire:model="{{ $getStatePath() }}"
        {{ $attributes->merge(['class' => 'w-12 h-8 p-0 border-none cursor-pointer']) }}
    />
</x-filament::input.wrapper>

Blade di atas membuat elemen input tipe color.


3. Menggunakan Custom Field dalam Resource

Pada Resource:

use App\Forms\Components\ColorPicker;

public static function form(Form $form): Form
{
    return $form
        ->schema([
            ColorPicker::make('theme_color')
                ->label('Warna Tema')
                ->default('#ff0000')
        ]);
}

Dengan ini, custom field dapat digunakan seperti komponen lainnya.


Menambahkan Options & Konfigurasi

Custom Field dapat dibuat lebih dinamis dengan method tambahan:

public function palette(array $colors)
{
    $this->extraAttributes(['data-palette' => json_encode($colors)]);
    return $this;
}

Contoh pemakaian:

ColorPicker::make('color')
    ->palette(['#FF0000', '#00FF00', '#0000FF'])

Integrasi UI Library Pihak Ketiga

Custom Form Fields memungkinkan integrasi library seperti:

  • Select2
  • Tom Select
  • Choices.js
  • Flatpickr
  • Dropzone.js
  • Filepond
  • Trix / Quill / CKEditor

Contoh integrasi Select2:

<select x-data="{}" x-init="$(\$el).select2()" wire:model="{{ $getStatePath() }}">
    <option value="">-- Pilih --</option>
</select>

Dengan pendekatan ini, form menjadi jauh lebih interaktif.


Validasi pada Custom Form Fields

Validasi mengikuti aturan form yang sama dengan komponen Filament lain.

Contoh:

ColorPicker::make('theme_color')
    ->required()
    ->rule('regex:/^#[0-9A-Fa-f]{6}$/')

Aturan di atas memastikan input berupa kode HEX valid.


Keunggulan Menggunakan Custom Form Fields

Beberapa keuntungan menggunakan fitur ini antara lain:

  1. Fleksibilitas tinggi
  2. Dapat digunakan berulang (reusable)
  3. Integrasi dengan UI library modern
  4. Validasi dapat dikustomisasi
  5. Mendukung Livewire & Alpine.js
  6. Memperkuat konsistensi UI dalam proyek besar
  7. Meningkatkan user experience admin

Dengan dukungan ini, dashboard admin dapat tampil layak seperti produk enterprise.


Kapan Sebaiknya Menggunakan Custom Form Fields?

Custom Field cocok digunakan ketika:

  • Komponen form bawaan tidak mencukupi
  • Perlu integrasi plugin eksternal
  • Form perlu menampilkan komponen interaktif
  • Ada kebutuhan UX/UI spesifik
  • Proyek dalam skala enterprise
  • Ingin menghindari duplikasi kode

Contoh kasus nyata:

  • Input lokasi dengan Maps API
  • Upload gambar multiple dengan preview
  • Keyword/tagging system dengan suggestions
  • Multi-relational selector
  • Currency formatter yang otomatis

Kesimpulan

Fitur Custom Form Fields pada Laravel Filament memberikan kemampuan untuk membangun komponen form di luar batas default yang disediakan sistem. Dengan struktur yang rapi, integrasi Livewire dan Alpine.js, serta dukungan untuk plugin UI pihak ketiga, developer dapat mengembangkan dashboard admin dengan fleksibilitas yang tinggi dan pengalaman pengguna yang optimal. Hal ini menjadikan Filament sangat andal dalam pengembangan aplikasi modern dan skala besar.

Pluginify
Pluginify