Parametrlerin MVC-de PHP-də Rotalarda Tətbiqi
Gəlin təsvir olunanı daha real bir nümunə üzərində
nəzərdən keçirək. Fərz edək ki, bizim PageController
nəzarətçimiz səhifələr massivini ehtiva edir (bu məlumatları
model təmin etməlidir, lakin biz hələ modellərlə tanış olmamışıq,
ona görə də məlumatlar hələlik sadəcə nəzarətçidə saxlanılsın):
<?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',
];
}
}
?>
Gəlin show aksiyasını edək, hansı ki,
müəyyən bir nömrəli (id) səhifəni ekranda
göstərəcək:
<?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()
{
// burada müəyyən nömrəli səhifəni göstərəcəyik
}
}
?>
Fərz edək ki, /page/1/ ünvanına müraciət etdikdə
birinci səhifənin mətni çıxsın, /page/2/ ünvanına
müraciət etdikdə - ikinci səhifənin mətni çıxsın və s.
Uyğun rotanı edək:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Təsvir olunan show metodunu reallaşdıraq:
<?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'] ]; // nömrəyə görə səhifəni göstəririk
}
}
?>
Aşağıdakı massivi ehtiva edən UserController
nəzarətçisini reallaşdırın:
<?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 nəzarətçisində, müəyyən bir
id-yə görə istifadəçini göstərəcək show
aksiyasını edin. Bu aksiya aşağıdakı formalı ünvanda
əlçatan olsun: /user/:id/.
UserController nəzarətçisində, verilmiş
istifadəçinin adını və ya yaşını göstərəcək info
aksiyasını edin. Bu aksiya aşağıdakı formalı ünvanda
əlçatan olsun: /user/:id/:key/, burada key
'name', 'age' və ya 'salary'
qiymətinə malik olacaq.
UserController nəzarətçisində, bütün istifadəçilərin
siyahısını ekranda göstərəcək all aksiyasını edin.
Bu aksiya aşağıdakı formalı ünvanda əlçatan olsun:
/user/all/ (burada heç bir parametr olmayacaq).
UserController nəzarətçisində, ilk N sayda istifadəçinin
siyahısını ekranda göstərəcək first aksiyasını edin.
Bu aksiya aşağıdakı formalı ünvanda əlçatan olsun:
/user/first/:n/, burada parametrdə ekranda
göstərilməli olan istifadəçilərin sayı olacaq.