My Course — Membangun Website Food Store Dengan Laravel Filament, Livewire dan Payment Gateway

Membuat Form User


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:

  1. TextInput dengan nama name

    php
    //name Forms\Components\TextInput::make('name') ->label('Name') ->placeholder('Name') ->required(),
  2. TextInput dengan nama email

    php
    //email Forms\Components\TextInput::make('email') ->label('Email') ->placeholder('Email') ->unique(ignorable: fn ($record) => $record) ->required(),

    Di atas, kita berikan fungsi unique untuk data email.

  3. TextInput dengan nama password

    php
    //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.

Tidak ada table of contents