⊗ppPmSDRt 444 of 447 menu

Rutare simplă în motorul în PHP

În lecția precedentă pe site-ul nostru era doar un singur grup de URL-uri. Desigur, de obicei pe site există mai multe tipuri de adrese.

Fiecare grup de adrese va fi procesat cu propria expresie regulată, care se numesc rute. În consecință procesul de potrivire a rutelor și a codului pentru procesarea lor se numește rutare.

Să presupunem, de exemplu, că avem două tipuri de adrese. Să scriem o rută pentru fiecare grup:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // o pagină după slug } if (preg_match('#^/page/all$#', $url, $params)) { // lista tuturor paginilor } ?>

Pentru comoditate, vom muta codul de procesare al fiecărei rute într-un fișier separat:

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

Fișierele incluse trebuie să returneze un array cu titlul și conținutul paginii.

Să scriem codul primului fișier, care afișează o pagină după slug-ul ei:

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

Și acum să scriem codul celui de-al doilea fișier, care afișează lista de link-uri către toate paginile:

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

După executarea uneia dintre condiții în variabila $page va fi întotdeauna un array cu aceeași structură. Vom folosi acest array pentru a înlocui titlul și conținutul în șablonul site-ului:

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

Să adunăm totul împreună și să obținem următorul cod:

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

Să presupunem că aveți un site cu utilizatori. Realizați o pagină pentru afișarea unui singur utilizator, o pagină pentru afișarea tuturor utilizatorilor și o pagină cu un formular pentru adăugarea unui nou utilizator.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge