⊗ppPmSDRt 444 of 447 menu

Proste routowanie w silniku w PHP

W poprzedniej lekcji na naszej stronie była tylko jedna grupa adresów URL. Oczywiście, zazwyczaj na stronie jest kilka typów adresów.

Każda grupa adresów będzie obsługiwana swoim własnym wyrażeniem regularnym, które nazywane są routami. Odpowiednio proces dopasowywania routów i kodu do ich obsługi nazywa się routowaniem.

Załóżmy, na przykład, że mamy dwa typy adresów. Dla każdej grupy napiszmy swój rout:

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

Dla wygody wynieśmy kod obsługi każdego routu do oddzielnego pliku:

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

Podłączane pliki swoim wynikiem powinny zwracać tablicę z tytułem i treścią strony.

Napiszmy kod pierwszego pliku, wyświetlającego jedną stronę po jej 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 teraz napiszmy kod drugiego pliku, wyświetlającego listę linków do wszystkich stron:

<?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 wykonaniu jednego z warunków w zmiennej $page zawsze będzie tablica o jednej strukturze. Użyjmy tej tablicy, aby podstawić tytuł i treść do szablonu strony:

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

Złóżmy wszystko razem i otrzymamy następujący 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; ?>

Załóżmy, że masz stronę z użytkownikami. Zrób stronę do wyświetlenia jednego użytkownika, stronę do wyświetlenia wszystkich użytkowników i stronę z formularzem do dodawania nowego użytkownika.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć