信息列表
Code entry
简介
代码条目(CodeEntry)允许你在信息列表中高亮显示代码段。它使用 Phiki 在服务器上对代码进行高亮显示:
use Filament\Infolists\Components\CodeEntry;
use Phiki\Grammar\Grammar;
CodeEntry::make('code')
->grammar(Grammar::Php)
修改代码的语言(language)
使用 grammar() 方法,你可以修改代码语言。可以使用超过 200 个语言,你可以通过 Phiki\Grammar\Grammar 枚举类查看全列表。比如,要切换到 JavaScript,你可以使用 Grammar::Javascript 枚举值:
use Filament\Infolists\Components\CodeEntry;
use Phiki\Grammar\Grammar;
CodeEntry::make('code')
->grammar(Grammar::Javascript)
除了允许静态值之外,grammar() 方法也接受函数以动态计算它的值。你可以将多个 utility 作为参数注入到该函数中。
Learn more about utility injection.
| Utility | Type | Parameter | Description |
|---|---|---|---|
| Entry | Filament\Infolists\Components\Entry | $component | The current entry component instance. |
| Get function | Filament\Schemas\Components\Utilities\Get | $get | A function for retrieving values from the current schema data. Validation is not run on form fields. |
| Livewire | Livewire\Component | $livewire | The Livewire component instance. |
| Eloquent model FQN | ?string<Illuminate\Database\Eloquent\Model> | $model | The Eloquent model FQN for the current schema. |
| Operation | string | $operation | The current operation being performed by the schema. Usually create, edit, or view. |
| Eloquent record | ?Illuminate\Database\Eloquent\Model | $record | The Eloquent record for the current schema. |
| State | mixed | $state | The current value of the entry. |
TIP
如果你的代码内容是 PHP 数组,它会自动转换成 JSON 字符串,而语言将会设置成 Grammar::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)
除了允许静态值之外,lightTheme() 和 darkTheme() 方法也接受函数以动态计算它们的值。你可以将多个 utility 作为参数注入到这些函数中。
Learn more about utility injection.
| Utility | Type | Parameter | Description |
|---|---|---|---|
| Entry | Filament\Infolists\Components\Entry | $component | The current entry component instance. |
| Get function | Filament\Schemas\Components\Utilities\Get | $get | A function for retrieving values from the current schema data. Validation is not run on form fields. |
| Livewire | Livewire\Component | $livewire | The Livewire component instance. |
| Eloquent model FQN | ?string<Illuminate\Database\Eloquent\Model> | $model | The Eloquent model FQN for the current schema. |
| Operation | string | $operation | The current operation being performed by the schema. Usually create, edit, or view. |
| Eloquent record | ?Illuminate\Database\Eloquent\Model | $record | The Eloquent record for the current schema. |
| State | mixed | $state | The current value of the entry. |
允许将代码复制到剪贴板
你可以使文本可复制(copyable),比如点击代码将文本复制到剪切板,且可选地指定自定义确认消息及持续时长(以毫秒计)。该特性只有在应用启用 SSL 时有效。
use Filament\Infolists\Components\CodeEntry;
CodeEntry::make('code')
->copyable()
->copyMessage('Copied!')
->copyMessageDuration(1500)
此外,你也可以传入一个布尔值,控制代码是否可复制:
use Filament\Infolists\Components\ColorEntry;
ColorEntry::make('color')
->copyable(FeatureFlag::active())
除了允许静态值之外,copyable()、copyMessage() 和 copyMessageDuration() 方法也接受函数以动态计算它们的值。你可以将多个 utility 作为参数注入到这些函数中。
Learn more about utility injection.
| Utility | Type | Parameter | Description |
|---|---|---|---|
| Entry | Filament\Infolists\Components\Entry | $component | The current entry component instance. |
| Get function | Filament\Schemas\Components\Utilities\Get | $get | A function for retrieving values from the current schema data. Validation is not run on form fields. |
| Livewire | Livewire\Component | $livewire | The Livewire component instance. |
| Eloquent model FQN | ?string<Illuminate\Database\Eloquent\Model> | $model | The Eloquent model FQN for the current schema. |
| Operation | string | $operation | The current operation being performed by the schema. Usually create, edit, or view. |
| Eloquent record | ?Illuminate\Database\Eloquent\Model | $record | The Eloquent record for the current schema. |
| State | mixed | $state | The current value of the entry. |
Still need help? Join our Discord community or open a GitHub discussion