Začínáme
Konfigurace
Každý config soubor, který tyhle balíčky publikují, o čem který klíč rozhoduje a co dostanete, když neřeknete nic.
Na této stránce
Wire funguje po instalaci hned. Konfigurační soubory publikujte jen když potřebujete změnit výchozí hodnoty pro notifikace, formáty data, uploady, chování tabulky, chování sortable nebo audit logging.
Publikování konfiguračních souborů
php artisan vendor:publish --tag=wire-core::configphp artisan vendor:publish --tag=wire-forms::configphp artisan vendor:publish --tag=wire-table::configphp artisan vendor:publish --tag=wire-sortable::configphp artisan vendor:publish --tag=wire-panels::configphp artisan vendor:publish --tag=wire-admin::configphp artisan vendor:publish --tag=wire-boost::config # Jeden na každý nainstalovaný modulphp artisan vendor:publish --tag=wire-module-users::configphp artisan vendor:publish --tag=wire-module-auth::configphp artisan vendor:publish --tag=wire-module-settings::configphp artisan vendor:publish --tag=wire-module-notifications::configphp artisan vendor:publish --tag=wire-module-audit::configphp artisan vendor:publish --tag=wire-module-media::config
Potřebujete jen tagy balíčků, které jste nainstalovali.
Proměnné prostředí
| Proměnná | Výchozí | Používá |
|---|---|---|
WIRE_NOTIFICATIONS_DRIVER |
session |
Core notifikace |
WIRE_AUDIT_ENABLED |
true |
Core audit log |
WIRE_AUDIT_USER_MODEL |
App\Models\User |
Core audit log |
WIRE_FORMS_UPLOAD_DISK |
public |
Forms upload souborů |
WIRE_MOBILE_SHEET |
true |
Core mobilní bottom-sheety |
WIRE_MOBILE_BREAKPOINT |
sm |
Breakpoint mobilního sheetu |
WIRE_AUTH_CODE_LOGIN |
false |
Přihlášení kódem z e-mailu, bez hesla |
WIRE_AUTH_CODE_SECOND_FACTOR |
false |
Kód e-mailem po správném heslu |
WIRE_AUTH_CODE_VERIFY_EMAIL |
false |
Potvrzení adresy kódem |
WIRE_AUTH_CODE_RESET_PASSWORD |
false |
V e-mailu pro obnovu hesla přijde kód, ne odkaz |
WIRE_USERS_PASSKEYS |
auto |
Karta s passkeys na profilu |
JavaScriptové assety
Není co konfigurovat ani co publikovat: každý balíček si své předsestavené bundly
zkopíruje do public/vendor/<balíček> a servíruje je jako statické soubory,
s cache-bustingem podle času poslední změny souboru. Jediné, o čem rozhoduje vaše
aplikace, je kde se vypíšou — dejte
@wireStackScripts
jednou do <head> layoutu a Alpine controllery všech nainstalovaných balíčků jsou
v úvodním dokumentu, což je přesně to, co je udrží funkční napříč wire:navigate
(včetně cesty cachovaného Zpět/Vpřed). Předáním jména balíčku —
@wireStackScripts('wire-table') — vypíšete jen bundly jednoho balíčku.
php artisan vendor:publish --tag=laravel-assets --force udělá tutéž kopii dopředu,
čímž ji sundá z prvního requestu po nasazení — užitečné, nikdy povinné. Konfigurační
klíč k tomu tak jako tak žádný není.
Podrobné vysvětlení v Začínáme → JavaScriptové assety.
Core
Konfigurace wire-core řídí sdílené chování UI.
return [ 'notifications' => [ 'default' => env('WIRE_NOTIFICATIONS_DRIVER', 'session'), ], 'icons' => [ 'default_set' => 'default', 'sets' => [ 'default' => \NyonCode\WireCore\Foundation\Icons\DefaultIconSet::class, // 'lucide' => App\Wire\Icons\LucideIconSet::class, // => "lucide:home" ], 'paths' => [ // resource_path('icons'), // logo.svg => "logo" // 'brand' => resource_path('icons/brand'), // mark.svg => "brand-mark" ], 'warn_missing' => env('WIRE_ICONS_WARN_MISSING', false), ], 'colors' => [ 'palette' => [], // Role, ne barvy: každá plocha následuje to, na co ukazují. // 'success' => 'emerald', 'danger' => 'red', 'warning' => 'amber', 'info' => 'cyan', ], // 'normal' nebo 'compact' — viz Vzhled → Hustota. 'density' => env('WIRE_DENSITY', 'normal'), // 'rounded' nebo 'sharp' — viz Vzhled → Tvar. 'shape' => env('WIRE_SHAPE', 'rounded'), 'plugins' => [ // App\Wire\Plugins\ExamplePlugin::class, ], 'modals' => [ 'default_width' => 'md', 'slide_over_width' => 'md', 'close_on_click_away' => true, 'close_on_escape' => true, ],];
Notifikace
Vestavěné notifikační drivery jsou:
| Hodnota | Driver |
|---|---|
session |
Ukládá notifikace do session flash dat |
livewire |
Odesílá Livewire browser události |
flasher |
Používá Flasher, když ho aplikace má nainstalovaný |
null |
Vypne doručování |
WIRE_NOTIFICATIONS_DRIVER=livewire
Příklady použití viz Core Notifikace.
Ikony
| Klíč | Účel |
|---|---|
default_set |
Který klíč v sets je neprefixovaná základní sada (výchozí 'default' = Heroicons). |
sets |
Zaregistrované sady ikon. Klíč výchozí sady je neprefixovaný; každý další klíč je povinný prefix, takže se jeho ikony adresují jako prefix:name (např. lucide:home). Registrace ne-výchozí sady bez řetězcového prefixu vyhodí chybu. |
paths |
Složky .svg souborů automaticky registrovaných jako holo-pojmenované ikony. Řetězcový klíč přidá pomlčkou spojený prefix názvu ('brand' => … → brand-mark). |
warn_missing |
Zaloguje varování (a vykreslí fallback), když je použit neznámý název ikony — hodí se na odchytávání překlepů ve vývoji. |
'icons' => [ 'default_set' => 'default', 'sets' => [ 'default' => DefaultIconSet::class, // "pencil" (Heroicons, 20×20 fill) 'lucide' => LucideIconSet::class, // "lucide:home" (24×24 stroke) ], 'paths' => [ 'brand' => resource_path('icons/brand'), ], 'warn_missing' => env('WIRE_ICONS_WARN_MISSING', false),],
Sady se používají společně s deterministickým, kolizím-odolným vyhodnocením.
Kompletní API, model prefix:name, vlastní sady a přístupnost viz
Core → Foundation → Ikony.
Pluginy
Zaregistrujte aplikační nebo balíčkové pluginy v poli plugins:
'plugins' => [ App\Wire\Plugins\TenantPlugin::class,],
Pluginy implementující HasConfiguration mohou také číst sloučené volby z wire-core.plugins.config.{pluginId}:
'plugins' => [ App\Wire\Plugins\ExportPlugin::class, 'config' => [ 'export' => [ 'format' => 'xlsx', ], ],],
Třídy pluginů, životní cyklus, závislosti, makra, hooky, type registry, query pipes a konfiguraci pluginů viz Core Pluginy.
Modaly
Hodnoty šířky modalu jsou size tokeny ve stylu Tailwindu jako sm, md, lg, xl, 2xl nebo full.
'modals' => [ 'default_width' => 'lg', 'slide_over_width' => 'xl', 'close_on_click_away' => false, 'close_on_escape' => true,],
Modální akce a slide-overy viz Core Modaly.
Mobil
Plovoucí panely (rozbalovací nabídky, menu skupin akcí, select/date/tag pickery, panely filtrů a přepínání sloupců tabulky) a mobilní varianty modalů se pod breakpointem zobrazí jako bottom sheet. Toto jsou globální výchozí hodnoty — každá komponenta je přepisuje u své instance.
'mobile' => [ // Zobrazit plovoucí panely jako bottom sheet na mobilu. false = klasický // plovoucí panel ukotvený k triggeru všude. 'sheet' => env('WIRE_MOBILE_SHEET', true), // Breakpoint, pod kterým se panely stanou sheetem: // 'sm' (< 640px, telefony — výchozí) // 'md' (< 768px, včetně malých tabletů) // 'lg' (< 1024px, včetně tabletu na výšku) 'breakpoint' => env('WIRE_MOBILE_BREAKPOINT', 'sm'),],
Přepisy u jednotlivých komponent (vyhrávají nad globálními výchozími):
// Sheet zap/vypSelect::make('role')->options([...])->sheetOnMobile(false); // vynutit plovoucíSelect::make('country')->searchable()->sheetOnMobile(); // vynutit sheet i když searchable$table->sheetOnMobile(false); // panely filtrů + přepínání sloupců // Breakpoint (sm | md | lg)Select::make('role')->mobileBreakpoint('lg'); // sheet až do 1024px$table->mobileBreakpoint('md');ActionGroup::make([...])->mobileBreakpoint('md');Action::make('edit')->form([...])->slideOverOnMobile()->mobileBreakpoint('md');
<x-wire::dropdown :sheet-on-mobile="false" :breakpoint="'md'">…</x-wire::dropdown>
Priorita: jednotlivá komponenta (->sheetOnMobile() / ->mobileBreakpoint()) > searchable-auto-floating > globální konfigurace. Searchable selecty jsou defaultně plovoucí, aby vyhledávací pole zůstalo použitelné. Sheety automaticky přidávají safe-area padding, úchyt pro zavření tažením a focus trap.
Forms
Konfigurace wire-forms řídí výchozí hodnoty data a času, zápis částek a telefonních
čísel, uploady a toolbar rich editoru.
return [ 'date_format' => 'd.m.Y', 'time_format' => 'H:i', 'datetime_format' => 'd.m.Y H:i', 'first_day_of_week' => 1, 'money' => [ 'currency' => 'CZK', 'decimal_separator' => ',', 'thousands_separator' => ' ', ], 'phone' => [ 'countries' => [], 'default_country' => null, ], 'file_upload' => [ 'disk' => env('WIRE_FORMS_UPLOAD_DISK', 'public'), 'directory' => 'uploads', ], 'rich_editor' => [ 'toolbar' => [ 'bold', 'italic', 'underline', 'strike', '|', 'heading', 'bulletList', 'orderedList', '|', 'link', 'blockquote', 'codeBlock', '|', 'undo', 'redo', ], ],];
money říká, jak MoneyInput zapíše částku, pokud pole neurčí jinak,
a phone je nabídka PhoneInputu — prázdný seznam countries nabídne
celou tabulku předvoleb a seznam je zároveň validací.
Pro přesun uploadů na jiný filesystem disk použijte WIRE_FORMS_UPLOAD_DISK:
WIRE_FORMS_UPLOAD_DISK=s3
Volby specifické pro pole viz Reference polí.
Table
Konfigurace wire-table řídí výchozí chování tabulky a chování inline text inputu.
return [ 'defaults' => [ 'per_page' => 10, 'per_page_options' => [10, 25, 50, 100], 'searchable' => true, 'sortable' => true, 'hoverable' => true, 'striped' => false, ], 'text_input' => [ 'save_on_blur' => true, 'save_on_enter' => true, 'live_validation' => false, 'live_debounce' => 500, ], 'notification_driver' => null,];
notification_driver může zůstat jako null; tabulka pak použije core session driver. Nastavte ho jen když tabulka potřebuje jinou třídu driveru.
Viz Přehled tabulek, Sloupce a Exporty.
Sortable
Konfigurace wire-sortable řídí řazení řádků.
return [ 'order_column' => 'sort_order', 'sortablejs_cdn' => null, 'animation' => 150, 'user_model' => 'App\\Models\\User', 'user_key_type' => 'id', // 'uuid' / 'ulid' pro neceločíselné klíče uživatele];
sortablejs_cdn je ve výchozím stavu null, protože SortableJS je zkompilovaný přímo
do bundlu balíčku — řazení nepotřebuje žádný CDN request, takže funguje offline i pod
přísnou CSP. Nastavte ho jen tehdy, když váš vlastní kód potřebuje globální
window.Sortable: tag se pak načte navíc k bundlu, nikdy místo něj, a drag
controller používá zabundlovanou kopii tak jako tak.
Nastavte user_key_type na uuid nebo ulid (před spuštěním migrace pořadí sloupců), když váš model uživatele používá neceločíselný primární klíč.
Viz Instalace Sortable.
Panels
Konfigurace wire-panels rozhoduje, jestli framework zaregistruje stránky
resource jako routy za vás.
return [ 'routes' => [ 'enabled' => false, 'prefix' => 'admin', 'middleware' => ['web', 'auth'], 'domain' => null, 'only' => [], 'except' => [], ],];
enabled je false, protože referenční cestou zůstává Route::wireResources()
ve vašem vlastním route souboru — tohle jsou tytéž argumenty skupiny, předané
jednou, pro aplikaci, která si kvůli nim nechce držet route soubor.
Dvě věci, které je dobré vědět, než to zapnete. Providery balíčků bootují dřív než
vaše vlastní, takže tyhle routy se matchují před vším v routes/web.php;
aplikace s catch-all routou pod stejným prefixem dnes vyhraje a přestala by.
A zapnout tohle a zároveň volat Route::wireResources() je odmítnuto, ne
smířeno — zaregistrovalo by to každou stránku dvakrát pod jedním jménem routy.
only / except berou registrované klíče: klíč resource nebo klíč dashboardu,
tentýž, kterým je adresuje menu a ResourceRoutes::urlFor().
Pro víc mount pointů — admin, business, production — přidejte klíč zones,
jednu položku na zónu; každá zdědí hodnoty nad sebou a přepíše to, co pojmenuje.
Klíč pole se stane prefixem jména routy, takže tentýž resource ve dvou zónách
dostane dvě jména rout místo dvou rout, které se perou o jedno.
'zones' => [ 'admin' => ['prefix' => 'admin', 'middleware' => ['web', 'auth', 'can:admin']], 'business' => ['prefix' => 'business', 'only' => ['orders']],],
Zóny viz Resources, zbytek Routování.
Boost
Konfigurace wire-boost řídí MCP server AI nástrojů. Dva nástroje spouštějící kód jsou ve výchozím stavu vypnuté.
return [ 'server' => [ 'name' => 'WireStack Boost', 'version' => '1.0.0', ], 'tools' => [ 'database_query' => env('WIRE_BOOST_DATABASE_QUERY', false), 'tinker' => env('WIRE_BOOST_TINKER', false), 'browser_logs' => env('WIRE_BOOST_BROWSER_LOGS', true), ], 'scan' => [ 'paths' => [app_path()], // kde list-wire-components hledá ], 'docs' => [ 'paths' => [], // extra Markdown adresáře pro search-wire-docs ], 'browser_logs' => [ 'path' => storage_path('wire-boost/browser.log'), 'max_entries' => 50, ],];
Zapněte database-query a tinker jen když důvěřujete agentovi připojujícímu se k serveru. Viz
MCP Server a nástroje.
Audit
Nastavení audit logu žije v config/wire-core.php:
'audit' => [ 'enabled' => env('WIRE_AUDIT_ENABLED', true), 'model' => \NyonCode\WireCore\Audit\AuditEntry::class, 'user_model' => env('WIRE_AUDIT_USER_MODEL', 'App\\Models\\User'), 'events' => null, 'exclude_columns' => [ 'password', 'remember_token', ], 'retention_days' => null,],
Nastavte events na pole, když chcete logovat jen vybrané typy událostí:
'events' => ['created', 'updated', 'deleted'],
Nastavení, použití modelu a prořezávání viz Audit Log.
Admin
Shell publikuje jediný blok a je to brand — všechno ostatní kolem něj je markup, který si napíšete (viz Admin shell):
// config/wire-admin.php'brand' => [ 'name' => null, // fallback je config('app.name') 'logo' => null, // široké menu — cesta pod public/, nebo URL 'logo_dark' => null, // tmavá varianta téhož 'mark' => null, // 64pixelová lišta — fallback je iniciála aplikace 'height' => 28, // vykreslená výška loga v pixelech 'url' => null, // kam brand odkazuje — výchozí je kořen panelu],
Proč jsou podoby loga dvě a proč se volí dřív, než se stránka vykreslí: Branding a motiv.
Moduly
Každý hotový modul publikuje vlastní config a jeho klíče jsou popsané na stránce modulu, ne tady — modul je celá oblast a jeho volby dávají smysl vedle obrazovek, které mění:
| Soubor | Co konfiguruje | Stránka |
|---|---|---|
wire-module-users.php |
Uživatelský model, resource, role a týmy, profilová obrazovka | Uživatelé |
wire-module-auth.php |
Které obrazovky auth modul registruje, jaké routy si bere a čtyři toky jednorázových kódů | Přihlašování |
wire-module-settings.php |
Tabulka nastavení, její cache a skupiny, které obrazovka ukazuje | Nastavení |
wire-module-notifications.php |
Zvoneček, jeho panel a tabulka uložených notifikací | Notifikace |
wire-module-audit.php |
Auditní obrazovka nad stopou, kterou zapisuje wire-core |
Audit |
wire-module-media.php |
Disky, konverze, povolené typy a picker | Média |
Zbytek wire-core
Tři klíče v config/wire-core.php jsou deklarace, ne nastavení, a každý je
popsaný tam, kde se vysvětluje věc, kterou deklaruje:
| Klíč | Co drží | Stránka |
|---|---|---|
resources |
Třídy resourců, které aplikace registruje | Resources → Registrace |
dashboards |
Třídy dashboardů, stejným způsobem | Dashboardy |
tenancy |
enabled a column, na který se aplikuje tenant scope |
Autorizace |
config/wire-table.php má ještě jeden: preferences volí driver, do kterého se
ukládá pořadí sloupců pro každého uživatele, jejich viditelnost a velikost stránky
(null, session nebo database, přičemž guest pojmenovává driver pro
nepřihlášeného návštěvníka). Viz Pokročilé funkce.