Core
Akce v infolistu
Tlačítka na read-only povrchu — kam infolistová akce dosáhne a co se změní, když je infolist uvnitř modalu akce.
Na této stránce
I z read-only povrchu je co dělat: schválit, stáhnout, otevřít záznam jinde. Akce v infolistu je obyčejná akce vykreslená tady — s jedním pravidlem, které je dobré znát předem: co může a co nemůže spustit stránka, která neskládá žádnou hostitelskou traitu.
Akce
Entries, hlavičky sekcí a repeatable řádky mohou nést interaktivní Action tlačítka — postavená ze stejného fluent Action API jako table a modal akce a sdílející field-action dispatch kontrakt (HasFieldActions). Názvy akcí musí být unikátní v rámci infolistu.
Požadavek na hostitele. Akce infolistu dispatchují přes hostitelův
callInfolistAction(), poskytovaný core action runtime (InteractsWithActions). Fungují hned, když je infolist zobrazen uvnitř action modalu (table /WithActionshostitel ho skládá). Samostatný infolist vyechovaný v prosté Livewire komponentě dispatchuje jen když ta komponenta skládá action runtime — a resourceViewPageje právě taková komponenta, takže na detailu resource musí mít akceurl(), aby vůbec něco dělala. Viz Panely: Stránky.
Hlavičkové akce sekce — vykreslené v hlavičce sekce, dostanou navázaný záznam:
Section::make('Profile') ->headerActions([ Action::make('edit')->icon('pencil')->action(fn ($record) => /* … */), ]) ->schema([ /* entries */ ]);
Akce entry — vykreslené pod hodnotou, dostanou záznam a $state entry:
TextEntry::make('api_token') ->actions([ Action::make('regenerate')->icon('arrow-path') ->action(fn ($record) => $record->regenerateToken()), ]);
Akce pro každý řádek — deklarované na RepeatableEntry, vykreslené jednou na řádek a vyvolané s položkou toho řádku jako $record / $state:
RepeatableEntry::make('lines') ->schema([TextEntry::make('sku'), TextEntry::make('qty')->numeric()]) ->actions([ Action::make('viewLine')->icon('eye') ->action(fn ($record) => /* $record je položka řádku */), ]);
Uvnitř action modalu
ViewAction (nebo jakákoli akce) může otevřít read-only modal, který ukáže záznam v infolistu. infolist() zrcadlí form(): záznam akce se naváže automaticky, modal není potvrzení a vykreslí jen tlačítko zavření.
use NyonCode\WireCore\Actions\ViewAction; ViewAction::make() ->slideOver() ->infolist([ TextEntry::make('name')->weight('bold'), TextEntry::make('email')->copyable(), TextEntry::make('created_at')->dateTime()->since(), ]); // Closure forma dostane záznam:ViewAction::make()->infolist(fn ($record) => Infolist::make()->schema([ TextEntry::make('name'),]));
Související
- Infolisty — povrch, na kterém tyhle akce sedí
- Akce — třídy, které se vykreslují
- Modaly akcí — modal s infolistem z druhé strany
- Panely: Stránky — proč stránka detailu neskládá hostitelskou traitu