Filament 面板:即時通知與編輯鎖
一條命令:鈴鐺立刻更新、誰在線、編輯鎖,以及自己更新的表格。
Filament 面板是團隊一整天工作的地方:訂單、工單、內容與審核。預設情況下面板靠輪詢得知變化,所以通知鈴鐺最多晚 30 秒,表格會過時,兩個人也可能互相蓋掉對方的修改。Filament 本來就能透過 Laravel Echo 連到任何相容 Pusher 的服務,我們的 hibira-io/filament 插件用一條命令就幫你打開,支援 Filament 3、4、5。不必自己架 WebSocket 伺服器,也不用 npm 建置。
團隊得到什麼
- 通知一存進資料庫,鈴鐺就立刻更新,你的 App 現有的每一則通知都適用。
- 顯示誰也在同一頁的頭像,以及編輯鎖:同一筆資料一次只有一個人編輯。
- 表格、關聯表和記錄頁在資料變動時自己更新,不論變動來自面板、佇列工作還是 API。
- 匯入、匯出的進度條,以及團隊聊天頁。

用到的功能
hibira-io/laravel提供的hibiraLaravel Broadcasting 連線。- Filament 內建的 Laravel Echo,由插件指向 Hibira。
- 通知、表格、記錄用私人頻道;誰在線與編輯鎖用 Presence 頻道。
- Channels HTTP API:伺服器在轉移編輯鎖前,用它確認誰還在這筆資料上。
誰可以收聽
POST /broadcasting/auth步驟 1:一條命令安裝
composer require hibira-io/filament
php artisan hibira:filament這條命令會把設定加進 .env 並詢問你的 App ID、key 與 secret,開啟廣播授權路由,建立通知資料表,並把插件加進你的 Panel provider,最後檢查連線與每個面板。隨時可以再執行,它只會補上缺少的部分。記得在 App 頁面的 Allowed origins 加上你網站的網址,瀏覽器才能連線。
步驟 2:通知立刻送達
程式碼不用改。每一則資料庫通知一存入就會更新鈴鐺,包括沒有加 isEventDispatched: true 的通知:
Notification::make()
->title('Order #1024 shipped')
->success()
->sendToDatabase($user);Filament 透過佇列儲存通知,所以請保持 php artisan queue:work 執行,開發時也可以用 QUEUE_CONNECTION=sync。
步驟 3:誰在線與編輯鎖
hibira:filament 已經打開頭像。要用編輯鎖,在編輯頁加一個 trait:
class EditPost extends EditRecord
{
use InteractsWithHibiraLock;
protected static string $resource = PostResource::class;
}第一個打開記錄的人持有鎖,其他人可以查看並請求編輯。持有人離開後,下一個人幾秒內就會拿到鎖,不需要心跳輪詢。

步驟 4:即時表格與記錄頁
打開 liveTables() 與 liveRecords() 後,表格與記錄頁會為所有開著它們的人更新。一連串的變動,例如匯入一千筆資料,每個請求或佇列工作只送一次,而不是每筆一次。編輯頁會顯示是誰改了記錄,並且只載入被改的欄位,所以你尚未儲存的編輯會保留。
用 query builder 大量更新時不會觸發 model 事件,請自己標記表格:
Order::query()->where('paid', false)->update(['status' => 'cancelled']);
app(\Hibira\Filament\LiveTables::class)->touch(Order::class);
步驟 5:面板的更多功能
->importProgress()一段一段顯示每個匯入、匯出的進度。->chat()為面板使用者加上聊天頁。- AI 代理也能出現在「誰在線」並像人一樣取得編輯鎖:請看 Filament 指南。
- 多人協作富文字編輯器、AI 工具審核收件匣與 AI 即時客服都建立在同一個插件上。

從 Reverb 或輪詢換過來
如果你的面板已經用 Echo 搭配 Reverb 或 Pusher,插件會替它所在的面板換掉 filament.broadcasting.echo 設定,你自己的事件與頻道規則照常運作。如果面板現在靠輪詢,->databaseNotifications() 會關掉輪詢;想保留作為備援就傳 polling: '60s'。搬遷頁面列出了要檢查的項目。
小提醒
- 每個環境(本機、測試、正式)各建一個 App,測試事件就不會送到真正的使用者。
- 用自己 guard 登入的面板,需要用同一個 guard 註冊廣播路由;
hibira:filament遇到時會提醒你。 - 一連串的變動在每個請求或佇列工作只送出一則訊息,用量很省;各方案內容請看價格。