跳到主要内容
版本:Next

Advanced infolists

Inserting Livewire components into an infolist

You may insert a Livewire component directly into an infolist:

use Filament\Infolists\Components\Livewire;
use App\Livewire\Foo;

Livewire::make(Foo::class)

If you are rendering multiple of the same Livewire component, please make sure to pass a unique key() to each:

use Filament\Infolists\Components\Livewire;
use App\Livewire\Foo;

Livewire::make(Foo::class)
->key('foo-first')

Livewire::make(Foo::class)
->key('foo-second')

Livewire::make(Foo::class)
->key('foo-third')

Passing parameters to a Livewire component

You can pass an array of parameters to a Livewire component:

use Filament\Infolists\Components\Livewire;
use App\Livewire\Foo;

Livewire::make(Foo::class, ['bar' => 'baz'])

Now, those parameters will be passed to the Livewire component's mount() method:

class Foo extends Component
{
public function mount(string $bar): void
{
// ...
}
}

Alternatively, they will be available as public properties on the Livewire component:

class Foo extends Component
{
public string $bar;
}

Accessing the current record in the Livewire component

You can access the current record in the Livewire component using the $record parameter in the mount() method, or the $record property:

use Illuminate\Database\Eloquent\Model;

class Foo extends Component
{
public function mount(Model $record): void
{
// ...
}

// or

public Model $record;
}

Lazy loading a Livewire component

You may allow the component to lazily load using the lazy() method:

use Filament\Infolists\Components\Livewire;
use App\Livewire\Foo;

Livewire::make(Foo::class)->lazy()