Vigezo vingi katika njia za injini ya PHP
Acha sasa kwenye tovuti yetu kuna kategoria na kurasa, zinazomilikiwa na kategoria hizi. Wacha tufanye jedwali lenye kategoria:
| id | slug | name |
|---|---|---|
| 1 | first-category | name1 |
| 2 | second-category | name2 |
Na jedwali lenye kurasa:
| id | slug | title | content | category_id |
|---|---|---|---|---|
| 1 | my-first-page | title1 | <div> content1 </div> | 1 |
| 2 | my-second-page | title2 | <div> content2 </div> | 1 |
| 3 | my-third-page | title3 | <div> content3 </div> | 2 |
Kwenye tovuti yetu tunaruhusu, kwamba slugs
za kurasa kutoka kategoria tofauti ziwe sawa. Hii
inamaanisha kuwa kwenye URL tunapaswa kueleza kwanza
slug ya kategoria, kisha slug ya ukurasa kwa
mpango huu: /page/:category/:page,
ambapo kupitia koloni zimeonyeshwa maeneo, ambayo
vitabiriwa vinabadilika.
Wacha tuandike njia za tovuti yetu:
<?php
$route = '^/page/(?<catSlug>[a-z0-9_-]+)/(?<pageSlug>[a-z0-9_-]+)
;
if (preg_match("#$route#", $url, $params)) {
$page = include 'view/page/show.php';
}
$route = '^/page/(?<catSlug>[a-z0-9_-]+)
;
if (preg_match("#$route#", $url, $params)) {
$page = include 'view/page/category.php';
}
$route = '^/
;
if (preg_match("#$route#", $url, $params)) {
$page = include 'view/page/all.php';
}
?>
Kwenye kishughulizi cha njia ya kwanza tutaonyesha ukurasa ulioombwa:
<?php
$catSlug = $params['catSlug'];
$pageSlug = $params['pageSlug'];
$query = "SELECT pages.title, pages.content
FROM pages
LEFT JOIN
category ON category.id=pages.category_id
WHERE
pages.slug='$pageSlug' AND category.slug='$catSlug'";
$res = mysqli_query($link, $query) or die(mysqli_error($link));
$page = mysqli_fetch_assoc($res);
return $page;
?>
Kwenye kishughulizi cha njia ya pili tutaonyesha orodha ya kurasa kutoka kategoria maalum:
<?php
$catSlug = $params['catSlug'];
$query = "SELECT pages.slug, pages.title FROM pages
LEFT JOIN
category ON category.id=pages.category_id
WHERE
category.slug='$catSlug'";
$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/' . $catSlug . '/' . $page['slug'] . '">' . $page['title'] . '</a>
</div>
';
}
$page = [
'title' => 'orodha ya kurasa zote za kategoria ' . $catSlug,
'content' => $content
];
return $page;
?>
Acha kwenye tovuti yako kuna miji na nchi.
Acha kwa anwani / inatolewa orodha
ya nchi zote, kwa anwani /:country
inachapishwa orodha ya miji ya nchi maalum kwenye kigezo
cha nchi, na kwa anwani /:country/:city
maelezo ya jiji maalum.