代码条目
简介
代码条目可在 infolist 中展示带高亮的代码片段。它使用 Phiki 在服务端进行代码高亮:
use Filament\Infolists\Components\CodeEntry;
use Phiki\Grammar\Grammar;
CodeEntry::make('code')
->grammar(Grammar::Php)

要使用代码条目,需先安装 phiki/phiki Composer 包。Filament 默认不包含它,以便你显式选择使用哪个 Phiki 主版本,因为不同主版本可用的语法与主题可能不同。可使用以下命令安装最新版 Phiki:
composer require phiki/phiki更改代码语法(语言)
可使用 grammar() 方法更改代码的语法(语言)。可用语法超过 200 种,可打开 Phiki\Grammar\Grammar 枚举类查看完整列表。若要改用 JavaScript 语法,可使用 Grammar::Javascript 枚举值:
use Filament\Infolists\Components\CodeEntry;
use Phiki\Grammar\Grammar;
CodeEntry::make('code')
->grammar(Grammar::Javascript)TIP
除了接受静态值外,grammar() 方法也接受函数以动态计算。你可以将各种工具作为参数注入该函数。


TIP
若代码条目的内容是 PHP 数组,会自动转换为 JSON 字符串,并将语法设为 Grammar::Json。你可以使用 jsonFlags() 方法自定义转换时使用的 JSON_ 标志。
更改代码主题(高亮)
可使用 lightTheme() 与 darkTheme() 方法更改代码主题。可用主题超过 50 种,可打开 Phiki\Theme\Theme 枚举类查看完整列表。若要使用流行的 Dracula 主题,可使用 Theme::Dracula 枚举值:
use Filament\Infolists\Components\CodeEntry;
use Phiki\Theme\Theme;
CodeEntry::make('code')
->lightTheme(Theme::Dracula)
->darkTheme(Theme::Dracula)TIP
除了接受静态值外,lightTheme() 与 darkTheme() 方法也接受函数以动态计算。你可以将各种工具作为参数注入这些函数。


允许将代码复制到剪贴板
你可以使代码可复制:点击后会将代码复制到剪贴板,并可选择自定义确认消息及持续时间(毫秒)。此功能仅在应用启用 SSL 时可用。
use Filament\Infolists\Components\CodeEntry;
CodeEntry::make('code')
->copyable()
->copyMessage('Copied!')
->copyMessageDuration(1500)也可传入布尔值,以控制代码是否可复制:
use Filament\Infolists\Components\CodeEntry;
CodeEntry::make('code')
->copyable(FeatureFlag::active())TIP
除了接受静态值外,copyable()、copyMessage() 与 copyMessageDuration() 方法也接受函数以动态计算。你可以将各种工具作为参数注入该函数。