⊗ppPmSDRt 444 of 447 menu

Jednoduché routování v PHP engine

V předchozí lekci byla na našem webu pouze jedna skupina URL. Samozřejmě, obvykle na webu je několik typů adres.

Každá skupina adres bude zpracována vlastním regulárním výrazem, které se nazývají routy. Odpovídajícím způsobem proces porovnávání rout a kódu pro jejich zpracování se nazývá routování.

Předpokládejme, že máme například dva typy adres. Pojďme pro každou skupinu napsat vlastní rout:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // jedna stránka podle slugu } if (preg_match('#^/page/all$#', $url, $params)) { // seznam všech stránek } ?>

Pro pohodlí vyjmeme kód zpracování každého routu do samostatného souboru:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { $page = include 'view/page/show.php'; } if (preg_match('#^/page/all$#', $url, $params)) { $page = include 'view/page/all.php'; } ?>

Připojované soubory musí svým výsledkem vracet pole s titulem a obsahem stránky.

Pojďme napsat kód prvního souboru, který zobrazuje jednu stránku podle jejího slugu:

<?php $slug = $params[1]; $query = "SELECT * FROM pages WHERE slug='$slug'"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); $page = mysqli_fetch_assoc($res); return $page; ?>

A teď napišme kód druhého souboru, který zobrazuje seznam odkazů na všechny stránky:

<?php $query = "SELECT slug, title FROM pages"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); for ($data = []; $row = mysqli_fetch_assoc($res); $data[] = $row); $content = ''; foreach ($data as $page) { $content .= ' <div> <a href="/page/' . $page['slug'] . '">' . $page['title'] . '</a> </div> '; } $page = [ 'title' => 'all pages', 'content' => $content ]; return $page; ?>

Po splnění jedné z podmínek bude v proměnné $page vždy pole z jedné struktury. Použijme toto pole k dosazení titulu a obsahu do šablony webu:

<?php $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['content'], $layout); echo $layout; ?>

Pojďme to všechno dát dohromady a dostaneme následující kód:

<?php $url = $_SERVER['REQUEST_URI']; if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { $page = include 'view/page/show.php'; } if (preg_match('#^/page/all$#', $url, $params)) { $page = include 'view/page/all.php'; } $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['content'], $layout); echo $layout; ?>

Předpokládejme, že máte web s uživateli. Vytvořte stránku pro zobrazení jednoho uživatele, stránku pro výpis všech uživatelů a stránku s formulářem pro přidání nového uživatele.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout