Skip to content
全部文档

键值对

简介

键值对字段可让你与一维 JSON 对象交互:

php
use Filament\Forms\Components\KeyValue;

KeyValue::make('meta')
键值对键值对

若使用 Eloquent 保存数据,请务必为模型属性添加 array 类型转换(cast)

php
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    /**
     * @return array<string, string>
     */
    protected function casts(): array
    { 
        return [
            'meta' => 'array',
        ];
    }

    // ...
}

添加行

字段下方会显示一个操作按钮,允许用户添加新行。

设置添加操作按钮的标签

你可以使用 addActionLabel() 方法设置标签,自定义添加行按钮上显示的文本:

php
use Filament\Forms\Components\KeyValue;

KeyValue::make('meta')
    ->addActionLabel('Add property')

TIP

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

阻止用户添加行

你可以使用 addable(false) 方法阻止用户添加行:

php
use Filament\Forms\Components\KeyValue;

KeyValue::make('meta')
    ->addable(false)

TIP

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

删除行

每项上会显示一个操作按钮,允许用户删除该项。

阻止用户删除行

你可以使用 deletable(false) 方法阻止用户删除行:

php
use Filament\Forms\Components\KeyValue;

KeyValue::make('meta')
    ->deletable(false)

TIP

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

编辑键

自定义键字段的标签

你可以使用 keyLabel() 方法自定义键字段的标签:

php
use Filament\Forms\Components\KeyValue;

KeyValue::make('meta')
    ->keyLabel('Property name')

TIP

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

添加键字段占位符

你也可以使用 keyPlaceholder() 方法为键字段添加占位符:

php
use Filament\Forms\Components\KeyValue;

KeyValue::make('meta')
    ->keyPlaceholder('Property name')

TIP

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

带自定义标签与占位符的键值对带自定义标签与占位符的键值对

阻止用户编辑键

你可以使用 editableKeys(false) 方法阻止用户编辑键:

php
use Filament\Forms\Components\KeyValue;

KeyValue::make('meta')
    ->editableKeys(false)

TIP

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

编辑值

自定义值字段的标签

你可以使用 valueLabel() 方法自定义值字段的标签:

php
use Filament\Forms\Components\KeyValue;

KeyValue::make('meta')
    ->valueLabel('Property value')

TIP

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

添加值字段占位符

你也可以使用 valuePlaceholder() 方法为值字段添加占位符:

php
use Filament\Forms\Components\KeyValue;

KeyValue::make('meta')
    ->valuePlaceholder('Property value')

TIP

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

阻止用户编辑值

你可以使用 editableValues(false) 方法阻止用户编辑值:

php
use Filament\Forms\Components\KeyValue;

KeyValue::make('meta')
    ->editableValues(false)

TIP

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

重新排序行

你可以使用 reorderable() 方法允许用户在表格中重新排序行:

php
use Filament\Forms\Components\KeyValue;

KeyValue::make('meta')
    ->reorderable()

TIP

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

可重新排序行的键值对可重新排序行的键值对

自定义键值对操作对象

该字段使用操作对象以便轻松自定义其中的按钮。你可以通过向操作注册方法传入函数来自定义这些按钮。该函数可访问 $action 对象,可用于 自定义它。以下方法可用于自定义操作:

  • addAction()
  • deleteAction()
  • reorderAction()

以下是自定义操作的示例:

php
use Filament\Actions\Action;
use Filament\Forms\Components\KeyValue;
use Filament\Support\Icons\Heroicon;

KeyValue::make('meta')
    ->deleteAction(
        fn (Action $action) => $action->icon(Heroicon::XMark),
    )

TIP

操作注册方法可以将各种工具作为参数注入到该函数中。