跳到主要内容
版本:4.x

Repeatable entry

简介

RepeatableEntry 允许你让数组或关联中的以一组 Entry 及布局组件进行重复:

use Filament\Infolists\Components\RepeatableEntry;
use Filament\Infolists\Components\TextEntry;

RepeatableEntry::make('comments')
->schema([
TextEntry::make('author.name'),
TextEntry::make('title'),
TextEntry::make('content')
->columnSpan(2),
])
->columns(2)

如你所见,RepeatableEntry 有一个可嵌入的 schema(),可以重复每一项。

比如,该条目的值可能如下:

[
[
'author' => ['name' => 'Jane Doe'],
'title' => 'Wow!',
'content' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod, nisl eget aliquam ultricies, nunc nisl aliquet nunc, quis aliquam nisl.',
],
[
'author' => ['name' => 'John Doe'],
'title' => 'This isn\'t working. Help!',
'content' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod, nisl eget aliquam ultricies, nunc nisl aliquet nunc, quis aliquam nisl.',
],
]
Repeatable entry

此外,commentsauthor 可能是 Eloquent 关联,titlecontent 可以是 Comment 模型的属性,而 name 可以是 Author 模型的一个属性。Filament 将会自动处理关联的加载,并以同样的方式展示数据。

Grid 布局

使用 grid() 方法,你可以将可重复项组织到列中:

use Filament\Infolists\Components\RepeatableEntry;

RepeatableEntry::make('comments')
->schema([
// ...
])
->grid(2)

该方法接收与 Gridcolumns() 方法相同的选项。让你可以在各种临界点中响应式地定制 Grid 的列数。

除了允许静态值外,grid() 方法也接受一个函数来动态计算其值。你可以将多个 utility 作为参数注入到该函数中。Learn more about utility injection.
UtilityTypeParameterDescription
EntryFilament\Infolists\Components\Entry$componentThe current entry component instance.
Get functionFilament\Schemas\Components\Utilities\Get$getA function for retrieving values from the current schema data. Validation is not run on form fields.
LivewireLivewire\Component$livewireThe Livewire component instance.
Eloquent model FQN?string<Illuminate\Database\Eloquent\Model>$modelThe Eloquent model FQN for the current schema.
Operationstring$operationThe current operation being performed by the schema. Usually <code>create</code>, <code>edit</code>, or <code>view</code>.
Eloquent record?Illuminate\Database\Eloquent\Model$recordThe Eloquent record for the current schema.
Statemixed$stateThe current value of the entry.
Repeatable entry in grid layout

移除样式容器

默认情况下,RepeatableEntry 中的每一项都被包装在一个样式为卡片的容器中,你可以使用 contained() 移除样式容器:

use Filament\Infolists\Components\RepeatableEntry;

RepeatableEntry::make('comments')
->schema([
// ...
])
->contained(false)
除了允许静态值外,contained() 方法也接受一个函数来动态计算其值。你可以将多个 utility 作为参数注入到该函数中。Learn more about utility injection.
UtilityTypeParameterDescription
EntryFilament\Infolists\Components\Entry$componentThe current entry component instance.
Get functionFilament\Schemas\Components\Utilities\Get$getA function for retrieving values from the current schema data. Validation is not run on form fields.
LivewireLivewire\Component$livewireThe Livewire component instance.
Eloquent model FQN?string<Illuminate\Database\Eloquent\Model>$modelThe Eloquent model FQN for the current schema.
Operationstring$operationThe current operation being performed by the schema. Usually <code>create</code>, <code>edit</code>, or <code>view</code>.
Eloquent record?Illuminate\Database\Eloquent\Model$recordThe Eloquent record for the current schema.
Statemixed$stateThe current value of the entry.