Panels
Příkazová řádka
Artisan příkazy, které napíšou resource, jeho stránky, vlastní stránku a tabulku relace — a ten, který přečte, co je zaregistrované.
Na této stránce
Všechno, z čeho se panel skládá, jde napsat ručně, a každý příkaz tady napíše
přesně to, co stránky čekají — takže první soubor je správně a zbytek je váš.
Žádný z nich nepřepíše soubor, který už máte, pokud nepředáte --force.
Generování resource
php artisan make:wire-resource Order
napíše resource a tři stránky, které běžný resource má:
app/Resources/OrderResource.phpapp/Livewire/Resources/Orders/ListOrders.phpapp/Livewire/Resources/Orders/CreateOrder.phpapp/Livewire/Resources/Orders/EditOrder.php
Resource deklaruje své pages(), takže jakmile je zaregistrovaný a
Route::wireResources() běží ve skupině rout vašeho panelu, jeho URL existují.
Stránka editace se napíše s $this->deleteHeaderAction() v hlavičce — to je
jediný default, který stránky nechávají na vás, protože kdo smí mazat co, je
vaše pravidlo (Stránky).
| Volba | Co mění |
|---|---|
--model=App\Domain\Order |
Model, když to není App\Models\{Name} |
--generate |
Pole, sloupce a položky infolistu přečtené z tabulky modelu |
--view |
Read-only ViewPage a infolist() na resource |
--simple |
Jedna ManagePage místo tří stránek |
--soft-deletes |
ManagesTrashedRecords a Obnovit / Trvale smazat v hlavičkách stránek záznamu |
--register |
Přidá třídu do publikovaného config/wire-core.php |
--force |
Přepíše soubory, které už existují |
--generate čte tabulku, ne model. Každý sloupec se podle typu stane polem,
sloupcem a položkou — boolean Toggle a BooleanColumn, datum
DateTimePicker::make()->asDate() a sloupec s ->date(), textový sloupec
Textarea, číslo ->numeric(), cokoli jiného TextInput — a sloupec, který
není nullable ani nemá default, je required(). Klíč, timestampy, deleted_at
a přihlašovací údaje se vynechají. Je to výchozí bod napsaný jednou: tabulka,
která ještě neexistuje, napíše resource bez generovaných řádků a řekne to,
místo aby selhala.
Na konci řekne, kde stránky jsou, nebo co chybí. Čte aplikaci tak, jak je:
jestli je resource zaregistrovaný — vyjmenovaný v config('wire-core.resources'),
právě přidaný přes --register, nebo ve složce, kterou jmenuje
config('wire-core.discover.resources') — a jestli zaregistrované třídy něco
routuje — route soubor, který volá Route::wireResources(), nebo
panelový záznam wire-core.routes.groups. Když je obojí na místě, vypíše
Ready: registered and routed at /admin/order-lines; jinak pojmenuje jen krok,
který chybí, napsaný pro tento resource. make:wire-page dělá totéž pro vlastní
stránku.
--register zapisuje jen tam, kde to jde bezpečně — do publikovaného
config/wire-core.php, který má seznam resources, a jen jednou. Jinde
vypíše řádek, který je potřeba přidat.
Generování vlastní stránky
php artisan make:wire-page TaskBoardphp artisan make:wire-page History --resource=Order
První napíše Page a pohled, který kreslí —
app/Livewire/Pages/TaskBoard.php a
resources/views/livewire/pages/task-board.blade.php. Druhý napíše stránku
o jednom záznamu OrderResource: skládá BelongsToResource,
ResolvesOneRecord a LinksToRecordPages, takže přijme klíč záznamu a kreslí
jeho záložky. Příkaz vypíše, co zbývá udělat: vlastní stránka se
registruje jako resource — config('wire-panels.pages')
nebo nalezená složka — a pak se routuje a objeví v menu sama; stránka záznamu se
routuje z pages() svého resource:
'history' => RoutePage::make(\App\Livewire\Resources\Orders\History::class)->uri('{record}/history'),
— a to z ní zároveň udělá jednu ze záložek záznamu. Routování je deklarace vlastníka, takže ho příkaz vypíše, místo aby upravoval resource.
Generování clusteru
php artisan make:wire-cluster Settingsphp artisan make:wire-page Taxes --cluster=Settings
První zapíše app/Clusters/Settings.php, cluster — jednu sekci
s jednou položkou v menu a jedním prefixem URL — a řekne, jak ho zaregistrovat,
což je stejně jako stránku. Druhý zapíše stránku, která je jeho členem: stránka
jmenuje cluster vlastností protected static ?string $cluster. Resource se
přidá implementací BelongsToCluster, jedné metody, napsané ručně.
Generování tabulky relace
php artisan make:wire-relation-manager Order items
napíše app/Livewire/Resources/Orders/ItemsRelationManager.php,
RelationManager nad relací items s tabulkou
k doplnění, a vypíše, jak ho vložit: nechte resource implementovat
ProvidesRelationManagers a vracet třídu z relationManagers().
Čtení toho, co je zaregistrované
php artisan wire:resourcesphp artisan wire:resources orders
První vypíše každý zaregistrovaný resource — klíč, třídu, model, povrchy, které
deklaruje, jeho stránky a kolik rout na ně vede. Druhý ukáže jeden resource
stránku po stránce: komponentu, každou routu, která na ni vede (stránka routovaná
ve dvou zónách jsou dva řádky), její URI a oprávnění, které vyžaduje, nebo
not routed. Oba čtou katalog a router — tytéž odpovědi, se kterými pracuje
menu, paleta i Route::wireResources() — takže co vypíšou, je to, co aplikace
skutečně má.
Změna toho, co píšou
php artisan vendor:publish --tag=wire-panels::stubs
zkopíruje šablony do stubs/wire-panels/ a každý příkaz tady přečte
publikovanou šablonu dřív než svou: resource.stub, resource-page.stub,
page.stub, page-view.stub, relation-manager.stub a
dashboard-page.stub.
Vygenerování komponenty
Části, ze kterých se skládá tabulka, formulář nebo infolist, mají vlastní generátory v balíčku, který každou z nich vlastní — existují tedy i bez panelu:
| Příkaz | Zapíše | Balíček |
|---|---|---|
make:wire-column Price |
app/Tables/Columns/PriceColumn.php + pohled buňky |
wire-table — vlastní sloupec |
make:wire-filter Region |
app/Tables/Filters/RegionFilter.php + pohled ovládacího prvku |
wire-table — vlastní filtr |
make:wire-field MoneyInput |
app/Forms/Components/MoneyInput.php + pohled inputu |
wire-forms — vlastní pole |
make:wire-entry Money |
app/Infolists/Components/MoneyEntry.php + jeho pohled |
wire-core — vlastní entry |
make:wire-action Archive [--bulk] |
app/Wire/Actions/ArchiveAction.php |
wire-core — vlastní preset |
make:wire-widget Revenue |
app/Widgets/RevenueWidget.php + jeho pohled |
wire-core — widgety |
Každý přidá svou příponu, pokud jméno už nekončí jí (pole žádnou nemá), nikdy
nepřepíše existující pohled a třídu nahradí jen s --force. Každý balíček
publikuje vlastní šablony — --tag=wire-table::stubs, wire-forms::stubs,
wire-core::stubs — do stubs/<balíček>/.