Dynamic form for product prices

I want to apply a dynamic form to ProductResource based on the existing license list.

products
- id
- name


licenses
- id
- name

product_price
- id
- license_id
- product_id
- price
- promo_price


Table products hasMany to product_price, product_price(product_id) belongsTo to products, and also license_id belongTo to licenses.

I want to create a form based on a list of licenses by entering price and promo_price in the product_price table

I have tried but not achieved

Group::make(function(Livewire $livewire, ?Model $record) {
    if ($livewire instanceof Pages\EditProduct) {
        $productPrices = $record->productPrices;

        return collect($productPrices)->map(function($price) {
            $license = $price->license;

            return Section::make($price->id)
                ->heading(str($license->name)->headline())
                ->id("data.productPrices.record-{$price->id}")
                ->schema([
                    Placeholder::make(json_encode($license)),
                    TextInput::make("record-{$price->id}.price")->numeric()->required(),
                    TextInput::make("record-{$price->id}.promo_price")->numeric()->required(),
                ]);
        })->toArray();
    } elseif ($livewire instanceof Pages\CreateProduct) {
        return collect(License::all())->map(function($license) {
            return Section::make(str($license->name)->headline())
                ->schema([
                    Placeholder::make(json_encode($license)),
                    TextInput::make('productPrices.price')->numeric()->required(),
                    TextInput::make('productPrices.promo_price')->numeric()->required(),
                ]);
        })->toArray();
    } else {
        throw new \InvalidArgumentException('Unsupported $livewire instance.');
    }
})->statePath('productPrices');
Was this page helpful?