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

开始

概述

信息列表不仅限于是展示条目(Entry)。你也可以使用"布局组件"将其组织成无限嵌套结构。

布局组件类可以在 "Filament\Infolists\Components" 命名空间中找到。它们与其他 entry 一起放在信息列表的 Schema 中。

组件可以使用静态 make() 方法创建。通常,接下来你需要定义子组件的 schema() 以在其内部展示:

use Filament\Infolists\Components\Grid;

Grid::make(2)
->schema([
// ...
])

可用布局组件

Filament 附带了一些布局组件,适于按需排列表单字段:

你也可以创建自定义布局组件,按你希望的方式组织字段。

设置 ID

你可以使用 id() 方法为组件定义 ID:

use Filament\Infolists\Components\Card;

Card::make()
->id('main-card')

添加额外的 HTML 属性

你可以将额外的 HTML 属性传递给组件,这些属性将合并到外部 DOM 元素上。将属性数组传递给 extraAttributes() 方法,其中数组键是属性名称,值是属性值:

use Filament\Infolists\Components\Group;

Card::make()
->extraAttributes(['class' => 'custom-card-style'])

这些类会与默认类合并,且任何其他属性都将覆盖默认属性。

全局设置

如果您希望全局更改组件的默认行为,那么您可以在服务提供者的 boot() 方法中调用静态的 configureUsing() 方法,向该方法传入闭包修改使用的组件。例如,如果您希望默认情况下所有 Card 组件都有 2 列,您可以这样做:

use Filament\Infolists\Components\Card;

Card::configureUsing(function (Card $card): void {
$card
->columns(2);
});

当然,你仍然可以单独在每个字段上重写覆盖:

use Filament\Infolists\Components\Card;

Card::make()
->columns(1)