文本列
概述
文本列(TextColumn)用来展示数据库中的简单文本:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('title')

显示为"徽章"
默认情况下,文本非常简单,没有背景色。你可以使用 badge() 方法将其显示为"徽章"。这方面的一个很好的用例是状态,其中可能需要显示与状态相匹配的颜色徽章:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('status')
->badge()
->color(fn (string $state): string => match ($state) {
'draft' => 'gray',
'reviewing' => 'warning',
'published' => 'success',
'rejected' => 'danger',
})

你也添加其他诸如图标到徽章中。
显示描述
描述用于在列内容上面或下面渲染额外的文本。
使用 description() 方法,你可以在文本列的内容下面显示描述:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('title')
->description(fn (Post $record): string => $record->description)

默认情况下,描述显示在主文本下方,不过你也可以使用第二个参数将其移到文本上方:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('title')
->description(fn (Post $record): string => $record->description, position: 'above')

日期格式化
你可以使用 date() 和 dateTime() 方法,通过 PHP 日期格式化 token 来格式化列状态:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('created_at')
->dateTime()
你也可以使用 since() 方法,借由 Carbon 的 diffForHumans() 来格式化列状态:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('created_at')
->since()
数字格式化
numeric() 方法允许你将列格式化成数字:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('stock')
->numeric()
如果你想自定义数字的精度用以格式化数字,你可以使用 decimalPlaces 参数:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('stock')
->numeric(decimalPlaces: 0)
默认情况下,应用的本地化会将用于格式化数字。如果你想自定义使用的本地化,可以将其传递给 locale 参数:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('stock')
->numeric(locale: 'nl')
此外,你可以在服务提供者的 boot() 方法中,使用 Number::useLocale() 方法,用以设置整个应用的默认本地化:
use Illuminate\Support\Number;
Number::useLocale('nl');
货币格式化
money() 方法允许你以任何货币快速格式化金额值:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('price')
->money('EUR')
money() 还有一个 divideBy 参数,以允许你在格式化之前将原始值除以某个数字。这对在数据库中将价格存储为分(cent)非常有用,比如:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('price')
->money('EUR', divideBy: 100)
默认情况下,应用的本地化设置会将用于格式化数字。如果你想自定义使用的本地化设置,可以将其传递给 locale 参数:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('price')
->money('EUR', locale: 'nl')
此外,你可以在服务提供者的 boot() 方法中,使用 Number::useLocale() 方法,用以设置整个应用的默认本地化:
use Illuminate\Support\Number;
Number::useLocale('nl');
限制文本长度
使用 limit() 方法,你可以限制单元格中值的长度:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('description')
->limit(50)
你也可以重用传入到 limit() 中的值:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('description')
->limit(50)
->tooltip(function (TextColumn $column): ?string {
$state = $column->getState();
if (strlen($state) <= $column->getCharacterLimit()) {
return null;
}
// Only render the tooltip if the column content exceeds the length limit.
return $state;
})
限制字符数
使用 words() 方法,你可以限制显示在单元格中的字数:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('description')
->words(10)
将文本限制为指定行数
你可以将文本限制到指定的行数,而不是限制成固定长度。将文本行数锁定到指定行数在响应式界面中很有用,这样可以确保在所有屏幕中都有一致性体验。使用 lineClamp() 方法可以达成此效果:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('description')
->lineClamp(2)
添加前后缀
你可以将前缀或后缀添加到单元格值中:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('domain')
->prefix('https://')
->suffix('.com')
内容换行
如果你希望列中内容太长时进行换行,可以使用 wrap() 方法:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('description')
->wrap()
罗列多个值
默认情况下,如果文本列中有多个值,会使用逗号隔开。你可以使用 listWithLineBreaks() 方法,将其改为换行展示:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('authors.name')
->listWithLineBreaks()



