Routování
Požadavky na absolvování
Úkolem routů je podle URL adresy poznat, co uživatel chce, a zavolat mu příslušný kontroler, který jeho dotaz obslouží.
Routy mohou být definované několika způsoby. Požadovanou akci může obsloužit pouze jednoduchá námi definovaná anonymní funkce, a nebo se o danou akci postará kontroler.
Pro pochopení smyslu je níže uveden celý proces po získání požadavku na zobrazení stránky (text je spjat s frameworku Laravel).
Navštívená stránka: obchod.cz/book/harry-potter
Možný tvar routu: Route::get('/book/{kniha}', [BookController::class, 'show']);
- Jako první se požadavek dostane k routování. Zjistí se, o jaký požadavek se jedná (a na jaký kontroler a jeho metodu směřuje) a co vše se má zkontrolovat a stát před předáním dat dále pomocí nastavených pravidel u samotné routy.
- Požadavek se profiltruje přes tzv. middleware třídy, které mohou být definované už před samotným routováním, a nebo až v kontroleru. V našem případě se může jednat o ověření toho, že uživatel je přihlášený a má práva na prohlížení knížek. Nebo se jen zkontroluje, zda-li předaný parametr neobsahuje znaky, které tam mít nechceme. Middleware si můžete představit jako takovou ochranku, jež vás zkontroluje před vstupem dovnitř.
- Podle adresy už framework ví, že chceme něco s knihami. Proto se zavolá
BookControllera jeho metodashow()pro zobrazení knížky, jelikož daná adresa splňuje nastavenou routubook/{book}. Kontroleru se předá parametr z URL adresy, tedy nějaký identifikátor knížky. - Nyní se zjistí, jaké všechny parametry metoda akce vyžaduje. Můžeme např. předat speciální třídu pomocí dependency injection, jež nám zvaliduje odeslaná data (formulář). V našem případě to ale bude jen instance modelu.
- Následně si kontroler získá instanci modelu
Books daty z databáze pomocí předaného identifikátoru"harry-potter". BookControllerpředá data z modelu pohledu (šabloně).- Šablona obsahuje HTML stránku pro zobrazení knížky a v ní nějakou Blade syntaxi i pro vypsání dat knížky. Pomocí Blade enginu se vygeneruje výsledná HTML stránka.
BookControllerdostane zpět ze šablony výsledné HTML a to pošle uživateli jako odpověď.- Uživateli se v prohlížeči zobrazí HTML stránka a vůbec netuší o tom všem, co jsme si tu nyní popsali.
Text převzat z kurzu Laravel.
Naposledy změněno: pátek, 5. února 2021, 18.45