核心概念
图标
概述
图标用在整个 Filament UI 中,用来与用户体验的核心部分进行视觉交流。我们使用 Blade UI Kit 的 Blade Icons 包来渲染图标。
可以在他们网站中搜索所有可用的图标,这些图标来自多个 Blade Icon 包。每个包都包含一套不同的图标集。
使用自定义 SVG 作为图标
Blade Icons 包允许你注册自定义的 SVG 作为图标。如果你想在 Filament 中自定义图标,这个功能很有用。
首先,发布 Blade Icon 配置文件:
php artisan vendor:publish --tag=blade-icons
然后打开 config/blade-icons.php 文件,并取消 sets 数组中 default 设置的注释。
既然默认设置存在于配置文件中,你只需将所需的任何图标放在应用的 resources/svg 目录中即可。比如,如果你将一个名为 star.svg 的 SVG 文件放到 resources/svg 目录下,你可以在 Filament 的任何地方以 icon-star 引用它。icon- 前缀也是在 config/blade-icons.php 文件中配置。你也可以在 Blade 视图中使用 @svg('icon-star') 指令渲染这个自定义图标。
替换默认图标
Filament 包含一个图标管理系统,让你可以替换任何在你自己的 UI 中使用的默认图标。在服务提供者(比如 AppServiceProvider、或者图标专用的服务提供者)的 boot() 方法中实现。如果你想创建一个插件使用不同的图标集替换 Heroicon,你应该创建一个带有类似服务提供者的 Laravel 包实现。
替换图标可以使用 FilamentIcon 门面。它有个 register() 方法,接收一个图标数组用以替换。数组的键是唯一的图标别名,用以在 Filament UI 中识别该图标,值是要替换的 Blade 图标的名称。此外,你可以使用 HTML 替代图标名,在 Blade 视图中渲染图标:
use Filament\Support\Facades\FilamentIcon; FilamentIcon::register([ 'panels::topbar.global-search.field' => 'fas-magnifying-glass', 'panels::sidebar.group.collapse-button' => view('icons.chevron-up'),]);
允许用户在插件中自定义图标
如果你创建了一个 Filament 插件,用户可能希望可以用与 Filament 核心包中一样的方式自定义图标。如果你将任何手动的 @svg() 用法替换程 <x-filament::icon> Blade 组件,那么这是可能的。该组件允许你传入一个图标别、默认使用的 SVG 图标的名称,及其他类及 HTML 属性:
<x-filament::icon alias="panels::topbar.global-search.field" icon="heroicon-m-magnifying-glass" wire:target="search" class="h-5 w-5 text-gray-500 dark:text-gray-400"/>
此外,你可以传入一个 SVG 元素到组件的 slot 插槽中,而不必定义默认图标名:
<x-filament::icon alias="panels::topbar.global-search.field" wire:target="search" class="h-5 w-5 text-gray-500 dark:text-gray-400"> <svg> <!-- ... --> </svg></x-filament::icon>
可用图标别名
后台面板图标别名
panels::global-search.field- 全局搜索字段panels::pages.dashboard.actions.filter- 仪表盘过滤 Action 的触发按钮panels::pages.dashboard.navigation-item- 仪表盘导航项panels::pages.password-reset.request-password-reset.actions.login- 请求密码重置页面的登录 Action 触发按钮panels::pages.password-reset.request-password-reset.actions.login.rtl- 请求密码重置页面的登录 Action 触发按钮 (right-to-left direction)panels::resources.pages.edit-record.navigation-item- 资源编辑记录页面导航项panels::resources.pages.manage-related-records.navigation-item- 资源管理关联记录页面导航项panels::resources.pages.view-record.navigation-item- 资源查看记录页面导航项panels::sidebar.collapse-button- 折叠侧边栏的按钮panels::sidebar.collapse-button.rtl- 折叠侧边栏的按钮 (right-to-left direction)panels::sidebar.expand-button- 展开侧边栏的按钮panels::sidebar.expand-button.rtl- 展开侧边栏的按钮 (right-to-left direction)panels::sidebar.group.collapse-button- 侧边栏分组的折叠按钮panels::tenant-menu.billing-button- 租户菜单的账单按钮panels::tenant-menu.profile-button- 租户菜单页面的 Profile 按钮panels::tenant-menu.registration-button- 租户菜单的注册按钮panels::tenant-menu.toggle-button- 切换租户菜单的按钮panels::theme-switcher.light-button- 主题切换器中切换到 light 主题的按钮panels::theme-switcher.dark-button- 主题切换器中切换到 dark 主题的按钮panels::theme-switcher.system-button- 主题切换器中切换系统主题的按钮panels::topbar.close-sidebar-button- 关闭侧边栏的按钮panels::topbar.open-sidebar-button- 打开侧边栏的按钮panels::topbar.group.toggle-button- 顶部菜单分组切换按钮panels::topbar.open-database-notifications-button- 打开数据库通知模态框的按钮panels::user-menu.profile-item- 用户菜单中的 Profile 项panels::user-menu.logout-button- 用户菜单中的退出按钮panels::widgets.account.logout-button- 账号插件中的退出按钮panels::widgets.filament-info.open-documentation-button- 从 Filament Info 插件中打开文档的按钮panels::widgets.filament-info.open-github-button- 从 Filament Info 插件中打开 GitHub 的按钮
表单构造器中的图标别名
forms::components.builder.actions.clone- Builder 项目的克隆触发按钮forms::components.builder.actions.collapse- Builder 项目的折叠触发按钮forms::components.builder.actions.delete- Builder 项目的删除触发按钮forms::components.builder.actions.expand- Builder 项目的展开触发按钮forms::components.builder.actions.move-down- Builder 项目的向下移动触发按钮forms::components.builder.actions.move-up- Builder 项目的向上移动触发按钮forms::components.builder.actions.reorder- Builder 项目的重新排序触发按钮forms::components.checkbox-list.search-field- 复选框列表中的搜索输入框forms::components.file-upload.editor.actions.drag-crop- 文件上传编辑器的拖动裁切触发按钮forms::components.file-upload.editor.actions.drag-move- 文件上传编辑器的拖拽移动触发按钮forms::components.file-upload.editor.actions.flip-horizontal- 文件上传编辑器的水平翻转触发按钮forms::components.file-upload.editor.actions.flip-vertical- 文件上传编辑器的垂直翻转触发按钮forms::components.file-upload.editor.actions.move-down- 文件上传编辑器的向下移动触发按钮forms::components.file-upload.editor.actions.move-left- 文件上传编辑器的向左移动触发按钮forms::components.file-upload.editor.actions.move-right- 文件上传编辑器的向右移动触发按钮forms::components.file-upload.editor.actions.move-up- 文件上传编辑器的向上移动触发按钮forms::components.file-upload.editor.actions.rotate-left- 文件上传编辑器的向左旋转触发按钮forms::components.file-upload.editor.actions.rotate-right- 文件上传编辑器的向右旋转触发按钮forms::components.file-upload.editor.actions.zoom-100- 文件上传编辑器的 zoom 100 触发按钮forms::components.file-upload.editor.actions.zoom-in- 文件上传编辑器的放大触发按钮forms::components.file-upload.editor.actions.zoom-out- 文件上传编辑器的缩小旋转触发按钮forms::components.key-value.actions.delete- Key-value 字段项目的删除触发按钮forms::components.key-value.actions.reorder- Key-value 字段项目的重新排序触发按钮forms::components.repeater.actions.clone- Repeater 项目的克隆触发按钮forms::components.repeater.actions.collapse- Repeater 项目的折叠触发按钮forms::components.repeater.actions.delete- Repeater 项目的删除触发按钮forms::components.repeater.actions.expand- Repeater 项目的展开触发按钮forms::components.repeater.actions.move-down- Repeater 项目的向下移动触发按钮forms::components.repeater.actions.move-up- Repeater 项目的向上移动触发按钮forms::components.repeater.actions.reorder- Repeater 项目的重新排序触发按钮forms::components.select.actions.create-option- Select 字段的新建选项触发按钮forms::components.select.actions.edit-option- Select 字段的编辑选项触发按钮forms::components.text-input.actions.hide-password- 在文本输入字段中隐藏密码 Action 的触发按钮forms::components.text-input.actions.show-password- 在文本输入字段中显示密码 Action 的触发按钮forms::components.toggle-buttons.boolean.false-boolean()切换按钮组的 "False" 选项forms::components.toggle-buttons.boolean.true-boolean()切换按钮组的 "True" 选项forms::components.wizard.completed-step- 向导卡中的完成步骤
表格构造器中的图标别名
tables::actions.disable-reordering- 重新排序禁用触发按钮tables::actions.enable-reordering- 重新排序启用触发按钮tables::actions.filter- 过滤器操作的触发按钮tables::actions.group- 分组记录 action 的触发按钮tables::actions.open-bulk-actions- 打开批量操作的触发按钮tables::actions.toggle-columns- 切换列操作的触发按钮tables::columns.collapse-button- 折叠列的按钮tables::columns.icon-column.false- 图标列的 False 状态tables::columns.icon-column.true- 图标列的真值状态tables::empty-state- 空状态图标tables::filters.query-builder.constraints.boolean- 查询构造器中布尔值约束的默认图标tables::filters.query-builder.constraints.date- 查询构造器中日期约束的默认图标tables::filters.query-builder.constraints.number- 查询构造器中数字约束的默认图标tables::filters.query-builder.constraints.relationship- 查询构造器中关联约束的默认图标tables::filters.query-builder.constraints.select- 查询构造器中下拉选择约束的默认图标tables::filters.query-builder.constraints.text- 查询构造器中文本约束的默认图标tables::filters.remove-all-button- 删除所有过滤器的按钮tables::grouping.collapse-button- 用于折叠一组记录的按钮tables::header-cell.sort-asc-button- 以升序排列的排序按钮tables::header-cell.sort-button'- 当某个字段当前未排序时的排序排序按钮tables::header-cell.sort-desc-button- 以降序排列的排序按钮tables::reorder.handle- 使用拖拽、拖放对记录重新排序的抓手tables::search-field- 搜索输入框
通知生成器中的图标别名
notifications::database.modal.empty-state- 数据库通知模态框的空状态notifications::notification.close-button- 关闭通知的按钮notifications::notification.danger- 危险通知notifications::notification.info- 信息通知notifications::notification.success- 成功通知notifications::notification.warning- 警告通知
Action 图标别名
actions::action-group- Action 分组的触发按钮actions::create-action.grouped- 分组新建 Action 的触发按钮actions::delete-action- 删除 Action 的触发按钮actions::delete-action.grouped- 分组删除 Action 的触发按钮actions::delete-action.modal- 删除 Action 的模态框actions::detach-action- Detach Action 的触发按钮actions::detach-action.modal- Detach Action 模态框actions::dissociate-action- Dissociate Action 模态框actions::dissociate-action.modal- Dissociate Action 模态框actions::edit-action- 编辑 Action 的触发按钮actions::edit-action.grouped- 分组编辑 Action 的触发按钮actions::force-delete-action- 强制删除 Action 的触发按钮actions::export-action.grouped- 分组导出 Action 的触发按钮actions::force-delete-action.grouped- 分组强制删除 Action 的触发按钮actions::force-delete-action.modal- 强制删除 Action 的模态框actions::import-action.grouped- 分组导入 Action 的触发按钮actions::modal.confirmation- 需要确认的 Action 的模态框actions::replicate-action- 复制 Action 的触发按钮actions::replicate-action.grouped- 分组复制 Action 的触发按钮actions::restore-action- 恢复 Action 的触发按钮actions::restore-action.grouped- 分组恢复 Action 的触发按钮actions::restore-action.modal- 恢复 Action 的模态框actions::view-action- 查看 Action 的触发按钮actions::view-action.grouped- 分组查看 Action 的触发按钮
信息列表图标别名
infolists::components.icon-entry.false- Icon Entry 的 false 状态infolists::components.icon-entry.true- Icon Entry 的真值状态
UI 组件中的图标别名
badge.delete-button- 删除徽章的按钮breadcrumbs.separator- 面包屑之间的分隔符breadcrumbs.separator.rtl- 面包屑之间的分隔符(right-to-left direction)modal.close-button- 关闭模态框的按钮pagination.first-button- 第一页按钮pagination.first-button.rtl- 第一页按钮(right-to-left direction)pagination.last-button- 最后一页按钮pagination.last-button.rtl- 最后一页按钮(right-to-left direction)pagination.next-button- 下一页按钮pagination.next-button.rtl- 下一页按钮(right-to-left direction)pagination.previous-button- 上一页按钮pagination.previous-button.rtl- 上一页按钮(right-to-left direction)section.collapse-button- 折叠区域的按钮
Still need help? Join our Discord community or open a GitHub discussion