PHP'деги MVC'деги роуттордо параметрлерди колдонуу
Келгиле, сүрөттөлгөн нерсени колдонууну
чын өмүрдөгү мисалда көрөлү. Биздин контроллер
PageController барактардын массивин
камтысын (бул маалыматтарды модель тарабынан берүү керек, бирок биз
моделдер менен дагы талкуулабайбыз, андыктан маалыматтар
азырынча контроллерде гана сакталсын):
<?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',
];
}
}
?>
Келгиле, show аракетин жасайлы, ал
экранга белгилүү бир
номерлүү баракты чыгарат (id):
<?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()
{
// бул жерде биз белгилүү бир номерлүү баракты көрсөтөбүз
}
}
?>
/page/1/ дарегине киргенде
бирінчи барактын тексти чыксын,
/page/2/ дарегине киргенде -
экинчи барактын тексти жана башкалар. Туура
роутту жасайлы:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Сүрөттөлгөн show ыкмасын ишке ашыралы:
<?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'] ]; // номер боюнча баракты көрсөтөбүз
}
}
?>
Төмөнкү массивди камтыган UserController
контроллерин ишке ашырыңыз:
<?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 контроллеринде,
белгилүү бир id боюнча
колдонуучуну көрсөткөн show аракетин жасаңыз. Ал
төмөнкү түрдөгү дарек менен жеткиликтүү болсун:
/user/:id/.
UserController контроллеринде,
берилген колдонуучунун
атын же жашын көрсөткөн info аракетин жасаңыз. Бул
аракет төмөнкү түрдөгү дарек менен жеткиликтүү болсун:
/user/:id/:key/, бул жерде key
'name', 'age'
же 'salary' маанисин алат.
UserController контроллеринде,
бардык колдонуучулардын тизмесин
экранга чыгарган all аракетин жасаңыз. Бул аракет
төмөнкү түрдөгү дарек менен жеткиликтүү болсун:
/user/all/ (бул жерде эч кандай
параметрлер болбойт).
UserController контроллеринде,
бирінчи N колдонуучулардын тизмесин экранга чыгарган
first аракетин жасаңыз. Бул аракет
төмөнкү түрдөгү дарек менен жеткиликтүү болсун: /user/first/:n/, бул жерде параметрде
экранга чыгарылуучу колдонуучулардын саны көрсөтүлөт.