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

Membuat Form Product


Setelah product resource berhasil dibuat, maka langkah selanjutnya adalah membuat form untuk proses create dan edit data product.

Silahkan teman-teman buka file app/Filament/Resources/ProductResource.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([ //image Forms\Components\FileUpload::make('image') ->label('Product Image') ->placeholder('Product Image') ->required(), //title Forms\Components\TextInput::make('title') ->label('Product Title') ->placeholder('Product Title') ->required(), Forms\Components\Grid::make(3)->schema([ //category Forms\Components\Select::make('category_id') ->label('Category') ->relationship('category', 'name') ->required(), //price Forms\Components\TextInput::make('price') ->label('Price') ->placeholder('Price') ->required(), //weight Forms\Components\TextInput::make('weight') ->label('Weight') ->placeholder('Weight') ->required(), ]), //description Forms\Components\RichEditor::make('description') ->label('Product Description') ->placeholder('Product Description') ->required(), ]) ]); }

Dari perubahan kode di atas, pertama kita menambahkan component Card.

cpp
Forms\Components\Card::make()

Kemudian di dalamnya, kita menambahkan beberapa form input, yaitu:

  1. FileUpload dengan nama image

    php
    //image Forms\Components\FileUpload::make('image') ->label('Product Image') ->placeholder('Product Image') ->required(),
  2. TextInput dengan nama title

    php
    //title Forms\Components\TextInput::make('title') ->label('Product Title') ->placeholder('Product Title') ->required(),
  3. Grid

    css
    Forms\Components\Grid::make(3)->schema([ //... ]),

    Di dalam Grid di atas, akan kita berikan 3 component di dalamnya, yaitu: category_id, price dan weight

  4. Select dengan nama category_id

    php
    //category Forms\Components\Select::make('category_id') ->label('Category') ->relationship('category', 'name') ->required(),

    Di atas, kita juga memanggil relasi category dan data yang akan ditampilkan adalah name.

  5. TextInput dengan nama price

    php
    //price Forms\Components\TextInput::make('price') ->label('Price') ->placeholder('Price') ->required(),
  6. TextInput dengan nama weight

    php
    //weight Forms\Components\TextInput::make('weight') ->label('Weight') ->placeholder('Weight') ->required(),
  7. RichEditor dengan nama description

    php
    //description Forms\Components\RichEditor::make('description') ->label('Product Description') ->placeholder('Product Description') ->required(),

Sekarang, silahkan reload project-nya, kemudian klik New product dan jika berhasil maka akan mendapatkan hasil seperti berikut ini.

Tidak ada table of contents