Key-value
En esta página
- Introduction#
- Adding rows#
- Setting the add action button's label#
- Preventing the user from adding rows#
- Deleting rows#
- Preventing the user from deleting rows#
- Editing keys#
- Customizing the key fields' label#
- Adding key field placeholders#
- Preventing the user from editing keys#
- Editing values#
- Customizing the value fields' label#
- Adding value field placeholders#
- Preventing the user from editing values#
- Reordering rows#
- Customizing the key-value action objects#
import AutoScreenshot from "@components/AutoScreenshot.astro" import UtilityInjection from "@components/UtilityInjection.astro"
Introduction#
The key-value field allows you to interact with one-dimensional JSON object:
use Filament\Forms\Components\KeyValue;
KeyValue::make('meta')
If you're saving the data in Eloquent, you should be sure to add an array cast to the model property:
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
/**
* @return array<string, string>
*/
protected function casts(): array
{
return [
'meta' => 'array',
];
}
// ...
}
Adding rows#
An action button is displayed below the field to allow the user to add a new row.
Setting the add action button's label#
You may set a label to customize the text that should be displayed in the button for adding a row, using the addActionLabel() method:
use Filament\Forms\Components\KeyValue;
KeyValue::make('meta')
->addActionLabel('Add property')
addActionLabel() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.
Preventing the user from adding rows#
You may prevent the user from adding rows using the addable(false) method:
use Filament\Forms\Components\KeyValue;
KeyValue::make('meta')
->addable(false)
addable() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.
Deleting rows#
An action button is displayed on each item to allow the user to delete it.
Preventing the user from deleting rows#
You may prevent the user from deleting rows using the deletable(false) method:
use Filament\Forms\Components\KeyValue;
KeyValue::make('meta')
->deletable(false)
deletable() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.
Editing keys#
Customizing the key fields' label#
You may customize the label for the key fields using the keyLabel() method:
use Filament\Forms\Components\KeyValue;
KeyValue::make('meta')
->keyLabel('Property name')
keyLabel() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.
Adding key field placeholders#
You may also add placeholders for the key fields using the keyPlaceholder() method:
use Filament\Forms\Components\KeyValue;
KeyValue::make('meta')
->keyPlaceholder('Property name')
keyPlaceholder() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.
Preventing the user from editing keys#
You may prevent the user from editing keys using the editableKeys(false) method:
use Filament\Forms\Components\KeyValue;
KeyValue::make('meta')
->editableKeys(false)
editableKeys() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.
Editing values#
Customizing the value fields' label#
You may customize the label for the value fields using the valueLabel() method:
use Filament\Forms\Components\KeyValue;
KeyValue::make('meta')
->valueLabel('Property value')
valueLabel() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.
Adding value field placeholders#
You may also add placeholders for the value fields using the valuePlaceholder() method:
use Filament\Forms\Components\KeyValue;
KeyValue::make('meta')
->valuePlaceholder('Property value')
valuePlaceholder() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.
Preventing the user from editing values#
You may prevent the user from editing values using the editableValues(false) method:
use Filament\Forms\Components\KeyValue;
KeyValue::make('meta')
->editableValues(false)
editableValues() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.
Reordering rows#
You can allow the user to reorder rows within the table using the reorderable() method:
use Filament\Forms\Components\KeyValue;
KeyValue::make('meta')
->reorderable()
reorderable() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.
Customizing the key-value action objects#
This field uses action objects for easy customization of buttons within it. You can customize these buttons by passing a function to an action registration method. The function has access to the $action object, which you can use to customize it. The following methods are available to customize the actions:
addAction()deleteAction()reorderAction()
Here is an example of how you might customize an action:
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),
)