⊗ppPmSDRt 444 of 447 menu

Jednostavno rutiranje u PHP motoru

U prethodnoj lekciji na našem sajtu postojala je samo jedna grupa URL-ova. Naravno, obično na sajtu postoji nekoliko tipova adresa.

Svaka grupa adresa će biti obrađena svojim regularnim izrazom, koji se nazivaju rutama. Shodno tome, proces uparivanja ruta i koda za njihovu obradu naziva se rutiranjem.

Recimo, na primer, da imamo dva tipa adresa. Hajde za svaku grupu napišimo svoju rutu:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // jedna stranica po slugu } if (preg_match('#^/page/all$#', $url, $params)) { // spisak svih stranica } ?>

Za praktičnost, izdvojimo kod obrade svake rute u poseban fajl:

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

Kao svoj rezultat, uključeni fajlovi moraju vratiti niz sa naslovom i sadržajem stranice.

Hajde da napišemo kod prvog fajla, koji prikazuje jednu stranicu po njenom 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 sada napišimo kod drugog fajla, koji prikazuje spisak linkova na sve stranice:

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

Nakon izvršenja jednog od uslova u promenljivoj $page uvek će biti niz iste strukture. Iskoristimo ovaj niz da ubacimo naslov i sadržaj u šablon sajta:

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

Sastavimo sve zajedno i dobijamo sledeći 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; ?>

Recimo da imate sajt sa korisnicima. Napravite stranicu za prikaz jednog korisnika, stranicu za prikaz svih korisnika i stranicu sa formom za dodavanje novog korisnika.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij