⊗ppPmSDRt 444 of 447 menu

Једноставан рутинг у PHP погону

У претходној лекцији на нашем сајту постојала је само једна група URL адреса. Наравно, обично на сајту постоји више типова адреса.

Свака група адреса ће бити обрађена својим регуларним изразом, који се називају рутовима. Према томе, процес поклапања рутова и кода за њихову обраду се зове рутинг.

Нека, на пример, имамо два типа адреса. Хајде за сваку групу напишемо свој рут:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // једна страница по слугу } if (preg_match('#^/page/all$#', $url, $params)) { // списак свих страница } ?>

Због погодности извучемо код обраде сваког рута у посебан фајл:

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

Својим резултатом укључени фајлови треба да враћају низ са тајтлом и садржајем странице.

Хајде напишимо код првог фајла, који исписује једну страницу по њеном слугу:

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

А сад напишимо код другог фајла, који исписује списак линкова на све странице:

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

Након извршења једног од услова у променљивој $page увек ће бити низ једнаке структуре. Искористимо овај низ, да бисмо убацили тајтл и садржај у шаблон сајта:

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

Сакупимо све заједно и добијемо следећи код:

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

Нека имате сајт са корисницима. Направите страницу за приказ једног корисника, страницу за испис свих корисника и страницу са формом за додавање новог корисника.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј