MVC da PHP da Routlarda Parametrlarni Qo'llash
Keling, tavsiflangan narsani amaliy misolda ko'rib chiqaylik.
Faraz qilaylik, bizning PageController kontrollerimizda sahifalar massivi mavjud
(ushbu ma'lumotlarni model topshirishi kerak, lekin biz hali modellar bilan tanishmaganmiz,
shuning uchun hozircha ma'lumotlar kontrollerda saqlansin):
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
}
?>
Keling, show amalini yarataylik, u
ma'lum bir raqamli (id) sahifani
ekranda ko'rsatadi:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
public function show()
{
// bu yerda ma'lum bir raqamdagi sahifani ko'rsatamiz
}
}
?>
Faraz qilaylik, /page/1/ manziliga murojaat qilganda
birinchi sahifa matni ko'rsatilsin,
/page/2/ manziliga murojaat qilganda -
ikkinchi sahifa matni va hokazo. Keling, mos keladigan routni yaratamiz:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Keling, tavsiflangan show metodini amalga oshiramiz:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
public function show($params)
{
echo $this->pages[ $params['id'] ]; // raqam bo'yicha sahifani ko'rsatamiz
}
}
?>
Quyidagi massivni o'z ichiga olgan UserController kontrollerini yarating:
<?php
$this->users = [
1 => ['name'=>'user1', 'age'=>'23', 'salary' => 1000],
2 => ['name'=>'user2', 'age'=>'24', 'salary' => 2000],
3 => ['name'=>'user3', 'age'=>'25', 'salary' => 3000],
4 => ['name'=>'user4', 'age'=>'26', 'salary' => 4000],
5 => ['name'=>'user5', 'age'=>'27', 'salary' => 5000],
];
?>
UserController kontrollerida, ma'lum bir id bo'yicha
foydalanuvchini ko'rsatadigan show amalini yarating. U
quyidagi ko'rinishdagi manzil orqali ochiq bo'lsin:
/user/:id/.
UserController kontrollerida, berilgan foydalanuvchining
ismi yoshi yoki maoshini ko'rsatadigan info amalini yarating.
Ushbu amal quyidagi ko'rinishdagi manzil orqali ochiq bo'lsin:
/user/:id/:key/, bu yerda key
'name', 'age'
yoki 'salary' qiymatiga ega bo'ladi.
UserController kontrollerida, barcha foydalanuvchilar
ro'yxatini ekranda ko'rsatadigan all amalini yarating.
Ushbu amal quyidagi ko'rinishdagi manzil orqali ochiq bo'lsin:
/user/all/ (bu yerda hech qanday parametr bo'lmaydi).
UserController kontrollerida, birinchi N ta foydalanuvchilar
ro'yxatini ekranda ko'rsatadigan first amalini yarating.
Ushbu amal quyidagi ko'rinishdagi manzil orqali ochiq bo'lsin:
/user/first/:n/, bu yerda parametrda
ekranda ko'rsatilishi kerak bo'lgan foydalanuvchilar soni bo'ladi.