⊗ppPmSDRt 444 of 447 menu

Egyszerű útválasztás PHP motorban

Az előző leckében a weboldalunkon csak egy URL csoport volt. Természetesen egy weboldalon általában többféle cím típus található.

Minden címcsoportot a saját reguláris kifejezésével fogunk feldolgozni, amelyeket útvonalaknak (route) nevezünk. Ennek megfelelően az útvonalak és a feldolgozó kódjuk összekapcsolásának folyamatát útválasztásnak (routing) hívjuk.

Tegyük fel például, hogy kétféle címünk van. Írjunk minden csoporthoz saját útvonalat:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // egy oldal a slug alapján } if (preg_match('#^/page/all$#', $url, $params)) { // az összes oldal listája } ?>

A kényelem kedvéért minden útvonal feldolgozó kódját tegyük külön fájlba:

<?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'; } ?>

A betöltött fájloknak egy tömböt kell visszaadniuk eredményként, amely tartalmazza az oldal címét és tartalmát.

Írjuk meg az első fájl kódját, amely kiírja egy oldalt a slugja alapján:

<?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; ?>

Most írjuk meg a második fájl kódját, amely kiírja az összes oldalra mutató link listáját:

<?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' => 'összes oldal', 'content' => $content ]; return $page; ?>

Az egyik feltétel végrehajtása után a $page változóban mindig egy struktúrájú tömb lesz. Használjuk ezt a tömböt, hogy behelyettesítsük a címet és a tartalmat a weboldal sablonjába:

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

Gyűjtsük össze az egészet, és a következő kódot kapjuk:

<?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; ?>

Tegyük fel, hogy van egy weboldalad felhasználókkal. Készíts egy oldalt egy felhasználó megjelenítéséhez, egy oldalt az összes felhasználó listázásához és egy oldalt egy új felhasználó hozzáadására szolgáló űrlappal.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás