Penggunaan Parameter dalam Rute MVC dalam PHP
Mari kita lihat penerapan yang dijelaskan pada
contoh yang lebih realistik. Katakan pengawal kita
PageController mengandungi array halaman
(data ini sepatutnya dikembalikan oleh model, tetapi kita
belum membincangkan model lagi, jadi biarkan
data buat sementara waktu disimpan dalam pengawal):
<?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',
];
}
}
?>
Mari buat tindakan show, yang
akan memaparkan halaman dengan
nombor tertentu (id) pada skrin:
<?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()
{
// di sini kita akan paparkan halaman dengan nombor tertentu
}
}
?>
Katakan apabila mengakses alamat /page/1/
teks halaman pertama akan dipaparkan, apabila
mengakses alamat /page/2/ -
teks halaman kedua dan seterusnya. Mari buat
rute yang sepadan:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Mari laksanakan kaedah show yang diterangkan:
<?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'] ]; // papar halaman mengikut nombor
}
}
?>
Laksanakan pengawal UserController,
yang mengandungi array berikut:
<?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],
];
?>
Dalam pengawal UserController, buat
tindakan show, yang akan memaparkan
pengguna mengikut id tertentu. Biarkan ia
boleh diakses melalui alamat dalam bentuk berikut:
/user/:id/.
Dalam pengawal UserController, buat
tindakan info, yang akan memaparkan
nama atau umur pengguna yang ditentukan. Biarkan
tindakan ini boleh diakses melalui alamat dalam bentuk
berikut: /user/:id/:key/, di mana key
akan mempunyai nilai 'name', 'age'
atau 'salary'.
Dalam pengawal UserController, buat
tindakan all, yang akan memaparkan
senarai semua pengguna pada skrin. Biarkan tindakan ini
boleh diakses melalui alamat dalam bentuk berikut:
/user/all/ (tiada parameter di sini).
Dalam pengawal UserController, buat
tindakan first, yang akan memaparkan
senarai N pengguna pertama pada skrin. Biarkan
tindakan ini boleh diakses melalui alamat dalam bentuk berikut: /user/first/:n/, di mana dalam parameter
akan terdapat bilangan pengguna yang perlu
dipaparkan pada skrin.