用途:在 Symfony 的 Twig 模板中渲染本地或远程 SVG 图标,图标以内联 <svg> 元素输出,不使用图标字体、<img> 标签,运行时无外部 HTTP 请求,可继承 currentColor、用 CSS 样式化并离线工作。
主要能力:支持本地图标(默认存放于 assets/icons/,文件路径去掉 .svg 即为图标名,子目录用 : 作为前缀,如 header:logo);支持 Iconify 按需图标,用 prefix:name 语法调用,如 lucide:arrow-right、tabler:heart、heroicons:star-solid、mdi:check,也可用于国旗、品牌标志、文件类型图标等;支持自定义图标集、别名与默认属性。
使用方式:安装命令为 composer require symfony/ux-icons。Twig 函数用法:{{ ux_icon('menu') }},可传 HTML 属性,如 {{ ux_icon('user-profile', {class: 'w-4 h-4'}) }}。Twig 组件用法(需 symfony/ux-twig-component):<twig:ux:icon name="user-profile" class="w-4 h-4" />,组件或函数上的 HTML 属性会渲染到 <svg> 上。配置位于 config/packages/ux_icons.yaml,可设置 icon_dir、default_icon_attributes、aliases、iconify(enabled、on_demand、endpoint)以及 ignore_not_found。CLI 命令:php bin/console ux:icons:import flowbite:user-solid 可导入单个图标,支持多个图标与 --force;php bin/console ux:icons:lock 可将当前按需使用的图标全部下载到本地,支持 --force 与 -v。
适用场景:Symfony 项目中需要统一管理图标、使用 Iconify 海量图标集、或希望避免运行时外部请求与图标字体的场景。
限制与注意:按需模式适合开发环境,生产环境建议运行 ux:icons:lock 将所用图标下载到本地;属性优先级为配置默认属性 < 图标集属性 < 单个图标属性,可用 false 移除某默认属性;图标默认视为装饰性,有语义的图标需添加 aria-label 与 role="img"。更多 API、模式与常见问题见资料中提到的 references/api.md、references/patterns.md、references/gotchas.md。