Setelah berhasil membuat resource user, maka langkah berikutnya adalah membuat form create dan edit-nya.
Silahkan teman-teman buka file app/Filament/Resources/UserResource.php, kemudian cari kode berikut ini.
php
public static function form(Form $form): Form
{
return $form
->schema([
//
]);
}
Dan ubahlan menjadi seperti berikut ini.
php
public static function form(Form $form): Form
{
return $form
->schema([
//card
Forms\Components\Card::make()
->schema([
//name
Forms\Components\TextInput::make('name')
->label('Name')
->placeholder('Name')
->required(),
//email
Forms\Components\TextInput::make('email')
->label('Email')
->placeholder('Email')
->unique(ignorable: fn ($record) => $record)
->required(),
//password
Forms\Components\TextInput::make('password')
->label('Password')
->placeholder('Password')
->dehydrateStateUsing(fn ($state) => $state ? bcrypt($state) : null)
->dehydrated(fn ($state) => filled($state)) // hanya mengubah password jika field diisi
->password(),
])
]);
}
Dari perubahan kode di atas, pertama kita menambahkan component Card.
cpp
Forms\Components\Card::make()
Kemudian di dalamnya, kita menambahkan 3 form input, yaitu:
-
TextInputdengan namanamephp//name Forms\Components\TextInput::make('name') ->label('Name') ->placeholder('Name') ->required(), -
TextInputdengan namaemailphp//email Forms\Components\TextInput::make('email') ->label('Email') ->placeholder('Email') ->unique(ignorable: fn ($record) => $record) ->required(),Di atas, kita berikan fungsi
uniqueuntuk data email. -
TextInputdengan namapasswordphp//password Forms\Components\TextInput::make('password') ->label('Password') ->placeholder('Password') ->dehydrateStateUsing(fn ($state) => $state ? bcrypt($state) : null) ->dehydrated(fn ($state) => filled($state)) // hanya mengubah password jika field diisi ->password(),Di atas, kita buat kondisi untuk password bersifat opsional, jika diisi maka akan di hash menggunakan
bcrypt.
Sekarang, silahkan reload project-nya, kemudian klik New user dan jika berhasil maka akan mendapatkan hasil seperti berikut ini.
