Պարզ ռաութինգ 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;
?>
Ենթադրենք դուք ունեք օգտատերերով կայք: Ստեղծեք էջ մեկ օգտատերոջ ցուցադրման համար, էջ բոլոր օգտատերերի ցուցադրման համար և էջ նոր օգտատեր ավելացնելու ձևով: