戏里戏外

Filament 自定义图标使用

2024-11-19#Laravel#Filament

在 Filament 开发中,除了默认提供的 Heroicons 图标库外,可能需要使用其他图标库(如 LucideTabler 等)。

本文将介绍几种在 Filament 中使用自定义图标的方法。

使用 blade-icons 包

这是最推荐的方法,因为维护简单、更新方便,而且有性能优化。

  1. 安装对应的图标包,以 Lucide 为例:
composer require mallardduck/blade-lucide-icons
  1. 在代码中直接使用:
use Filament\Resources\Table;

class ListUsers extends Resource 
{
    protected function getHeaderActions(): array
    {
        return [
            Actions\CreateAction::make()->icon('lucide-plus'),
        ];
    }       
}

更多图标库可以参考 blade-icons 的 README 文档。

使用自定义 SVG

如果需要使用特定的 SVG 图标,可以采用这种方式。

  1. 从图标网站下载需要的 SVG 图标
  2. resources/svg 目录下保存图标文件
  3. 发布 blade-icons 配置:
php artisan vendor:publish --tag=blade-icons
  1. 在代码中使用:
Action::make('edit')
    ->icon('icon-pencil') // 使用自定义图标,`icon-` 是默认前缀

直接使用 SVG 视图

请注意

这种方式一般不建议使用,它仅适合只需要少量自定义图标的情况。

  1. 创建图标视图文件 resources/views/icons/edit.blade.php
<svg xmlns="http://www.w3.org/2000/svg" class="w-4 h-4" viewBox="0 0 24 24" fill="none" stroke="currentColor">
    <!-- 图标的 SVG 路径 -->
</svg>
  1. 在代码中使用:
Action::make('edit')
    ->icon(view('icons.edit'))

缓存优化

为了优化 Filament 以用于生产,应该在部署脚本中运行以下命令:

php artisan filament:optimize

该命令将缓存 Filament 组件和 Blade 图标,从而提高 Filament 面板的性能。