Skip to content
全部文档

代码条目

简介

代码条目可在 infolist 中展示带高亮的代码片段。它使用 Phiki 在服务端进行代码高亮:

php
use Filament\Infolists\Components\CodeEntry;
use Phiki\Grammar\Grammar;

CodeEntry::make('code')
    ->grammar(Grammar::Php)
代码条目代码条目

要使用代码条目,需先安装 phiki/phiki Composer 包。Filament 默认不包含它,以便你显式选择使用哪个 Phiki 主版本,因为不同主版本可用的语法与主题可能不同。可使用以下命令安装最新版 Phiki:

bash
composer require phiki/phiki

更改代码语法(语言)

可使用 grammar() 方法更改代码的语法(语言)。可用语法超过 200 种,可打开 Phiki\Grammar\Grammar 枚举类查看完整列表。若要改用 JavaScript 语法,可使用 Grammar::Javascript 枚举值:

php
use Filament\Infolists\Components\CodeEntry;
use Phiki\Grammar\Grammar;

CodeEntry::make('code')
    ->grammar(Grammar::Javascript)

TIP

除了接受静态值外,grammar() 方法也接受函数以动态计算。你可以将各种工具作为参数注入该函数。

带 JavaScript 语法高亮的代码条目带 JavaScript 语法高亮的代码条目

TIP

若代码条目的内容是 PHP 数组,会自动转换为 JSON 字符串,并将语法设为 Grammar::Json。你可以使用 jsonFlags() 方法自定义转换时使用的 JSON_ 标志。

更改代码主题(高亮)

可使用 lightTheme()darkTheme() 方法更改代码主题。可用主题超过 50 种,可打开 Phiki\Theme\Theme 枚举类查看完整列表。若要使用流行的 Dracula 主题,可使用 Theme::Dracula 枚举值:

php
use Filament\Infolists\Components\CodeEntry;
use Phiki\Theme\Theme;

CodeEntry::make('code')
    ->lightTheme(Theme::Dracula)
    ->darkTheme(Theme::Dracula)

TIP

除了接受静态值外,lightTheme()darkTheme() 方法也接受函数以动态计算。你可以将各种工具作为参数注入这些函数。

使用 Dracula 主题的代码条目使用 Dracula 主题的代码条目

允许将代码复制到剪贴板

你可以使代码可复制:点击后会将代码复制到剪贴板,并可选择自定义确认消息及持续时间(毫秒)。此功能仅在应用启用 SSL 时可用。

php
use Filament\Infolists\Components\CodeEntry;

CodeEntry::make('code')
    ->copyable()
    ->copyMessage('Copied!')
    ->copyMessageDuration(1500)

也可传入布尔值,以控制代码是否可复制:

php
use Filament\Infolists\Components\CodeEntry;

CodeEntry::make('code')
    ->copyable(FeatureFlag::active())

TIP

除了接受静态值外,copyable()copyMessage()copyMessageDuration() 方法也接受函数以动态计算。你可以将各种工具作为参数注入该函数。