Back to Filament

Key-value entry

packages/infolists/docs/07-key-value-entry.md

5.6.22.2 KB
Original Source

import AutoScreenshot from "@components/AutoScreenshot.astro" import UtilityInjection from "@components/UtilityInjection.astro"

Introduction

The key-value entry allows you to render key-value pairs of data, from a one-dimensional JSON object / PHP array.

php
use Filament\Infolists\Components\KeyValueEntry;

KeyValueEntry::make('meta')

For example, the state of this entry might be represented as:

php
[
    'description' => 'Filament is a collection of Laravel packages',
    'og:type' => 'website',
    'og:site_name' => 'Filament',
]
<AutoScreenshot name="infolists/entries/key-value/simple" alt="Key-value entry" version="5.x" />

If you're saving the data in Eloquent, you should be sure to add an array cast to the model property:

php
use Illuminate\Database\Eloquent\Model;

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

    // ...
}

Customizing the key column's label

You may customize the label for the key column using the keyLabel() method:

php
use Filament\Infolists\Components\KeyValueEntry;

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

<UtilityInjection set="infolistEntries" version="5.x">As well as allowing a static value, the keyLabel() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.</UtilityInjection>

Customizing the value column's label

You may customize the label for the value column using the valueLabel() method:

php
use Filament\Infolists\Components\KeyValueEntry;

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

<UtilityInjection set="infolistEntries" version="5.x">As well as allowing a static value, the valueLabel() method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters.</UtilityInjection>

<AutoScreenshot name="infolists/entries/key-value/custom-labels" alt="Key-value entry with custom column labels" version="5.x" />