⊗ppPmSDRt 444 of 447 menu

Eenvoudige routing in 'n enjin in PHP

In die vorige les was daar slegs een groep URLs op ons webwerf. Natuurlik is daar gewoonlik verskeie tipes adresse op 'n webwerf.

Elke groep adresse sal hanteer word deur 'n eie reguliere uitdrukking, wat genoem word roetes. Gevolglik word die proses van die passing van roetes en die kode vir die hantering daarvan genoem routing.

Kom ons sê, byvoorbeeld, ons het twee tipes adresse. Kom ons skryf 'n eie roete vir elke groep:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // een bladsy volgens die slak } if (preg_match('#^/page/all$#', $url, $params)) { // lys van alle bladsye } ?>

Vir gerief sal ons die kode vir die hantering van elke roete in 'n aparte lêer plaas:

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

Die ingeslote lêers moet as hul resultaat 'n skikking met die titel en inhoud van die bladsy teruggee.

Kom ons skryf die kode van die eerste lêer, wat een bladsy volgens sy slak vertoon:

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

En nou skryf ons die kode van die tweede lêer, wat 'n lys van skakels na alle bladsye vertoon:

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

Na die uitvoering van een van die voorwaardes sal daar in die veranderlike $page altyd 'n skikking van een struktuur wees. Ons gebruik hierdie skikking om die titel en inhoud in die webwerf-sjabloon te plaas:

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

Kom ons voeg alles saam en kry die volgende kode:

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

Kom ons sê jy het 'n webwerf met gebruikers. Skep 'n bladsy om een gebruiker te wys, 'n bladsy om alle gebruikers te vertoon en 'n bladsy met 'n vorm om 'n nuwe gebruiker by te voeg.

Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp