布局
传统表格布局的问题
传统表格因响应效果差而臭名昭著。在移动端,当要渲染的内容在水平方向上较长的时候,你所具有的灵活性有限:
- 允许用户水平滚动查看更多表格内容
- 在较小的设备中隐藏不重要字段
在 Filament 中,这两种方式都能实现。如果内容溢出,表格可以自动滚动,而且你也可以根据浏览器的响应式临界点选择展示或者隐藏某些字段。你可以使用 visibleFrom() 或 hiddenFrom() 方法实现:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('slug')->visibleFrom('md')
这样挺好,不过仍然还是有一个刺眼的问题 - 在移动端,当一行中有较多信息时,用户无法在不滚动的情况下快速查看数据。
幸运的是,Filament 让你可以在不触碰 HTML 或者 CSS 的情况下,创建响应式、表格式的接口。这些布局让你根据响应式临界点(breakpoint)决定将数据显示在表格行中的哪个位置。

允许字段在移动端上堆叠
我们来认识一下这个组件 - Split:
use Filament\Tables\Columns\Layout\Split;
use Filament\Tables\Columns\TextColumn;
Split::make([
ImageColumn::make('avatar'),
TextColumn::make('name'),
TextColumn::make('email'),
])

Split 组件用于包裹字段,允许字段在移动端堆叠起来。
默认情况下,split 中各字段列一直都是相互之间左右紧挨着排列。不过,你可以使用 from() 方法选择这种行为从哪个响应式临界点开始。在此临界点之前,字段会堆叠起来:
use Filament\Tables\Columns\Layout\Split;
use Filament\Tables\Columns\ImageColumn;
use Filament\Tables\Columns\TextColumn;
Split::make([
ImageColumn::make('avatar'),
TextColumn::make('name'),
TextColumn::make('email'),
])->from('md')