Filament resource od nuly

Filament vám z modelu vyrobí kompletní administraci. Ukážu vám, jak nastavit resource, formulář i tabulku a získat funkční správu dat za pár minut.
Publikováno 24.08.2026

Filament resource od nuly

Publikováno

· Autor: · Pod kapotou · Základy · 3 min čtení

Obsah článku

Potřebujete klientovi předat administraci, ve které si sám spravuje obsah — ale nechcete ji celou psát ručně? Přesně na tohle používám Filament. Z jednoho modelu vám vygeneruje formuláře, tabulky i filtry, takže hotovou správu dat máte za odpoledne, ne za týden.

Co je resource

Filament je administrační nadstavba nad Laravelem. Základní stavební kámen je resource — třída, která pro jeden model popisuje, jak vypadá formulář pro editaci a jak tabulka s výpisem. Vygenerujete ho Artisanem:

php artisan make:filament-resource Clanek --generate

Přepínač --generate se podívá do databáze a předvyplní pole podle sloupců tabulky. Získáte funkční základ, který pak jen doladíte. Resource se skládá ze tří logických částí: definice formuláře, definice tabulky a takzvaných stránek (výpis, vytvoření, editace), které Filament vygeneruje za vás. V naprosté většině případů se staráte jen o první dvě.

Formulář

Formulář definujete jako pole komponent. Každé pole je objekt vytvořený statickou metodou make() a zřetězenými nastaveními:

public static function form(Schema $schema): Schema
{
    return $schema->components([
        TextInput::make('nazev')
            ->required()
            ->maxLength(160),
        Textarea::make('obsah')
            ->rows(10),
        Toggle::make('publikovano'),
    ]);
}

Každé pole je jeden objekt a zřetězením metod postupně upřesňujete jeho chování — od popisku přes nápovědu až po validaci. Kód se tak čte skoro jako věta: „textový vstup nazev je povinný, nejvýš sto šedesát znaků". Díky tomu je i po roce jasné, co formulář dělá.

Pole umí reagovat na sebe navzájem. Přes Get přečtete hodnotu jiného pole a podle ní třeba další pole schováte:

Select::make('typ')
    ->options(['clanek' => 'Článek', 'video' => 'Video'])
    ->live(),

TextInput::make('url_videa')
    ->visible(fn (Get $get): bool => $get('typ') === 'video'),

Tabulka

Výpis záznamů popíšete podobně — přidáte sloupce, vyhledávání a řazení:

public static function table(Table $table): Table
{
    return $table
        ->columns([
            TextColumn::make('nazev')->searchable()->sortable(),
            IconColumn::make('publikovano')->boolean(),
            TextColumn::make('created_at')->dateTime('d.m.Y'),
        ]);
}
  • searchable() zapne fulltextové hledání nad sloupcem.
  • sortable() umožní klikací řazení.
  • boolean() vykreslí ano/ne jako ikonku.

Tabulka toho ale umí mnohem víc než jen vypisovat. Přes filtry necháte uživatele zobrazit třeba jen publikované články, přes akce mu dáte tlačítka na hromadné operace — smazání, změnu stavu, export. Akce je samostatný objekt s vlastním potvrzovacím oknem i formulářem, takže i složitější operaci obsloužíte pár řádky. Za mě je právě tohle největší síla Filamentu: běžné věci, které byste jinak psali dokola, tu dostanete hotové a jen je poskládáte podle potřeby. Klient pak dostane administraci, ve které si sám filtruje, hromadně upravuje a exportuje, aniž byste na to psali vlastní logiku.

Kdy Filament ano a kdy ne

Buďme féroví: Filament je ideální na interní administraci a redakční systémy. Pokud ale stavíte veřejný web s vlastním designem, který má vypadat přesně podle grafiky, admin nástroj vám nepomůže — tam sáhnete po vlastním frontendu. Filament berte jako mocný nástroj pro backend část, ne jako řešení všeho.

Když formulář naroste, vyplatí se ho rozdělit do kroků — jak na to, ukazuju v článku vícekrokový formulář ve Filamentu. Ať už data zadává admin, nebo návštěvník, vždy je pořádně validujte; poctivá kontrola vstupu vás posune od holé administrace k nástroji, který klient opravdu rád používá.

Chcete administraci na míru, ve které se klient neztratí? Napište mi a domluvíme nezávaznou poptávku.