FilamentF
Filament17mo ago
Gustavo

Can't create custom page with multiple forms

I'm creating a custom page and so far it has been working correctly, but now I found a problem that doesn't make any sense to me.

This custom page has two forms in it. Following the documentation about adding forms to livewire components: https://filamentphp.com/docs/3.x/forms/adding-a-form-to-a-livewire-component#using-multiple-forms

I implemented the HasForms interface and used the InteractsWithForms on the custom page class
use Filament\Pages\Page;
use Filament\Forms\Contracts\HasForms;
use Filament\Forms\Concerns\InteractsWithForms;

class Kanban extends Page implements HasForms
{
    use InteractsWithForms;


I initialized both forms data as an empty array
public ?array $formHoursData = [];
public ?array $formDeclinedData = [];


I defined a getForms() function returning an array with both forms names
protected function getForms(): array
{
    return [
        'formHours',
        'formDeclined',
    ];
}


I defined both functions that define each form
use Filament\Forms\Form;

public function formHours(Form $form): Form
{
    // form definition here
}

public function formDeclined(Form $form): Form
{
    // form definition here
}


And lastly I filled both forms on the
mount()
function
public function mount()
{
    $this->formHours->fill();
    $this->formDeclined->fill();
}


After all this, somehow when I open the page, I get the error App\Filament\Pages\Kanban::formHours(): Argument #1 ($form) must be of type Filament\Forms\Form, Filament\Infolists\Infolist given which happens when filament tries to run the form definition function.

Did I do something wrong? Why isn't it working? Since the page class is implementing the HasForms interface and the InteractsWithForms trait, why is Filament trying to feed an Infolist to the form definition function?
Was this page helpful?