[테이블.컬럼] IconColumn
개요
아이콘 컬럼은 아이콘을 렌더링하여 해당 내용을 나타냅니다:
use Filament\Tables\Columns\IconColumn;
IconColumn::make('status')
->icon(fn (string $state): string => match ($state) {
'draft' => 'heroicon-o-pencil',
'reviewing' => 'heroicon-o-clock',
'published' => 'heroicon-o-check-circle',
})
이 함수에서 $state
는 컬럼의 값이며, $record
를 사용하여 기본 Eloquent 레코드에 접근할 수 있습니다.

색상 커스터마이징
아이콘 컬럼은 동일한 문법을 사용하여 아이콘 색상도 지정할 수 있습니다. 색상은 danger
, gray
, info
, primary
, success
, warning
중 하나가 될 수 있습니다:
use Filament\Tables\Columns\IconColumn;
IconColumn::make('status')
->color(fn (string $state): string => match ($state) {
'draft' => 'info',
'reviewing' => 'warning',
'published' => 'success',
default => 'gray',
})
이 함수에서 $state
는 컬럼의 값이며, $record
를 사용하여 기본 Eloquent 레코드에 접근할 수 있습니다.

크기 커스터마이징
기본 아이콘 크기는 IconColumnSize::Large
이지만, IconColumnSize::ExtraSmall
, IconColumnSize::Small
, IconColumnSize::Medium
, IconColumnSize::ExtraLarge
, IconColumnSize::TwoExtraLarge
중 하나로 크기를 커스터마이징할 수 있습니다:
use Filament\Tables\Columns\IconColumn;
IconColumn::make('status')
->size(IconColumn\IconColumnSize::Medium)

불리언 처리
아이콘 컬럼은 데이터베이스 컬럼의 값이 true 또는 false일 때, boolean()
메서드를 사용하여 체크 또는 크로스 아이콘을 표시할 수 있습니다:
use Filament\Tables\Columns\IconColumn;
IconColumn::make('is_featured')
->boolean()
모델 클래스에서 이 컬럼이 이미
bool
또는boolean
으로 캐스팅되어 있다면, Filament가 이를 감지하므로boolean()
을 수동으로 사용할 필요가 없습니다.

불리언 아이콘 커스터마이징
각 상태를 나타내는 아이콘을 커스터마이징할 수 있습니다. 아이콘은 Blade 컴포넌트의 이름입니다. 기본적으로 Heroicons가 설치되어 있습니다:
use Filament\Tables\Columns\IconColumn;
IconColumn::make('is_featured')
->boolean()
->trueIcon('heroicon-o-check-badge')
->falseIcon('heroicon-o-x-mark')

불리언 색상 커스터마이징
각 상태를 나타내는 아이콘 색상을 커스터마이징할 수 있습니다. 색상은 danger
, gray
, info
, primary
, success
, warning
중 하나가 될 수 있습니다:
use Filament\Tables\Columns\IconColumn;
IconColumn::make('is_featured')
->boolean()
->trueColor('info')
->falseColor('warning')

여러 아이콘 감싸기
여러 개의 아이콘을 표시할 때 한 줄에 다 들어가지 않으면 wrap()
을 사용하여 감쌀 수 있습니다:
use Filament\Tables\Columns\IconColumn;
IconColumn::make('icon')
->wrap()
참고: 감싸기의 "너비"는 컬럼 라벨에 의해 영향을 받으므로, 더 촘촘하게 감싸려면 더 짧거나 숨겨진 라벨을 사용해야 할 수 있습니다.