PHP इंजन में रूट्स में कई पैरामीटर
अब मान लीजिए कि हमारी वेबसाइट पर श्रेणियाँ हैं और पृष्ठ जो इन श्रेणियों से संबंधित हैं। आइए श्रेणियों के साथ एक तालिका बनाएं:
| id | slug | name |
|---|---|---|
| 1 | first-category | name1 |
| 2 | second-category | name2 |
और पृष्ठों के साथ एक तालिका:
| 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 |
हम अपनी वेबसाइट पर अनुमति देते हैं कि स्लग
विभिन्न श्रेणियों के पृष्ठ मेल खा सकते हैं। इसका
मतलब है कि URL में हमें पहले श्रेणी का स्लग निर्दिष्ट करना होगा,
और फिर पृष्ठ का स्लग इस
योजना के अनुसार: /page/:category/:page,
जहाँ कोलन द्वारा उन स्थानों को इंगित किया गया है जहाँ
परिवर्तनशील पैरामीटर होंगे।
आइए हमारी वेबसाइट के लिए रूट्स लिखें:
<?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';
}
?>
पहले रूट के हैंडलर में हम अनुरोधित पृष्ठ दिखाएंगे:
<?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;
?>
दूसरे रूट के हैंडलर में हम निर्दिष्ट श्रेणी के पृष्ठों की सूची दिखाएंगे:
<?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' => 'श्रेणी के सभी पृष्ठों की सूची ' . $catSlug,
'content' => $content
];
return $page;
?>
मान लीजिए आपके पास शहरों और देशों वाली एक वेबसाइट है।
मान लीजिए पते / पर सभी देशों की सूची
दिखाई जाती है, पते /:country पर
पैरामीटर में निर्दिष्ट देश के शहरों की सूची
दिखाई जाती है, और पते /:country/:city पर
निर्दिष्ट शहर का विवरण दिखाया जाता है।