能用 Filament 建立簡單的後台很不錯,不過面對管理上的各種需求,如果不能做到相當的客製化,那麼很可能使用者會完全不買單,導致後台最後必須要大幅撰寫客製化內容,甚至要整個重寫的慘狀。
不過幸好,Filament 在這部分,即使是面對一些很小的調整,有些甚至會讓工程師覺得是可有可無的這類客製化,Filament 都有想到並且加進來。
下面我們來看看一些 Filament 客製化的範例
前面我們使用 Filament 工具建立出來的欄位,已經可以列出商品相關的所有資料
不過有時候管理上,會需要列出與該資料相關聯的內容
以前面的例子,像是可能會要求列出商品分類是不是開啟狀態。
這類需求如果客製化,會需要透過一系列關聯來取得資料
不過 Filament 支援使用 dot notation 來顯示關聯資料
所以我們只需要加上
IconColumn::make('category.is_active')
->boolean(),
就可以在畫面上看到這個內容
如果覺得標籤需要調整,可以透過 label()
進行調整
IconColumn::make('category.is_active')
->label('category state')
->boolean(),
過去遇到後台管理時,常常會出現一類需求,希望可以針對單一欄位進行搜尋。
如果要客製化這個需求,每個需要搜尋的欄位都是一個 API,很常會是一個大任務
不過在 Filament 內,這個需求只需要簡單的 searchable()
就可以達成
TextColumn::make('price')
->money()
->sortable()
->searchable(isIndividual: true),
只要這樣做,畫面上就可以呈現出針對價格的搜尋框了
在預設的操作邏輯內,列表頁面是用來呈現所有資料的,要編輯的話我們可以進入編輯頁面進行操作,
但是有時候使用者會希望經常編輯的欄位,比方說商品標題,可以在列表頁面就進行修改。
這個需求如果客製化起來,由於列表頁的資料很多,也會是一場不小的任務
不過用 Filament 我們只需要將 TextColumn
改成 TextInputColumn
即可
TextInputColumn::make('name')
->searchable(),
有關列表頁面可以做到的客製化,這邊先簡單介紹一些
剩下的我們明天再繼續介紹