⊗ppPmSDRt 444 of 447 menu

Paprastas maršrutizavimas PHP variklyje

Ankstesnėje pamokoje mūsų svetainėje buvo tik viena URL grupa. Žinoma, paprastai svetainėje būna kelių tipų adresai.

Kiekvieną adresų grupę apdoros savo reguliari išraiška, kuri vadinama maršrutais. Atitinkamai maršrutų atitikimo ir jų apdorojimo kodo suderinimo procesas vadinamas maršrutizavimu.

Tarkime, pavyzdžiui, kad turime dviejų tipų adresus. Kiekvienai grupei parašykime savo maršrutą:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // vienas puslapis pagal slug } if (preg_match('#^/page/all$#', $url, $params)) { // visų puslapių sąrašas } ?>

Patogumui kiekvieno maršruto apdorojimo kodą išskirkime į atskirą failą:

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

Prijungiami failai savo rezultatu turi grąžinti masyvą su puslapio pavadinimu ir turiniu.

Parašykime pirmojo failo kodą, kuris atvaizduoja vieną puslapį pagal jo slug:

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

O dabar parašykime antrojo failo kodą, kuris atvaizduoja visų puslapių nuorodų sąrašą:

<?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' => 'visi puslapiai', 'content' => $content ]; return $page; ?>

Įvykdžius vieną iš sąlygų kintamajame $page visada bus masyvas iš vienos struktūros. Naudokime šį masyvą, kad pastatytume pavadinimą ir turinį į svetainės šabloną:

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

Sujunkime viską kartu ir gausime tokį kodą:

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

Tarkime, kad turite svetainę su vartotojais. Sukurkite pushlapį vieno vartotojo rodymui, pushlapį visų vartotojų išvedimui ir pushlapį su forma naujo vartotojo pridėjimui.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti