Penerapan Parameter dalam Rute di MVC di PHP
Mari kita lihat penerapan yang dijelaskan pada
contoh yang lebih nyata. Misalkan controller kita
PageController berisi array halaman
(data ini seharusnya dikembalikan oleh model, tetapi
kita belum membahas model, jadi untuk sementara
data hanya disimpan di controller):
<?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 action show, yang
akan menampilkan halaman dengan
nomor tertentu (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()
{
// di sini kita akan menampilkan halaman dengan nomor tertentu
}
}
?>
Misalkan ketika mengakses alamat /page/1/
teks halaman pertama akan ditampilkan, ketika
mengakses alamat /page/2/ -
teks halaman kedua, dan seterusnya. Mari buat
rute yang sesuai:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Mari implementasikan method show yang dijelaskan:
<?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'] ]; // tampilkan halaman berdasarkan nomor
}
}
?>
Implementasikan controller UserController,
yang berisi 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 controller UserController, buatlah
action show, yang akan menampilkan
user berdasarkan id tertentu. Misalkan action ini
dapat diakses melalui alamat dengan bentuk berikut:
/user/:id/.
Dalam controller UserController, buatlah
action info, yang akan menampilkan
nama atau usia user yang ditentukan. Misalkan
action ini dapat diakses melalui alamat dengan bentuk
berikut: /user/:id/:key/, di mana key
akan memiliki nilai 'name', 'age'
atau 'salary'.
Dalam controller UserController, buatlah
action all, yang akan menampilkan
daftar semua user ke layar. Misalkan action ini
dapat diakses melalui alamat dengan bentuk berikut:
/user/all/ (tidak ada parameter di sini).
Dalam controller UserController, buatlah
action first, yang akan menampilkan
daftar N user pertama ke layar. Misalkan
action ini dapat diakses melalui alamat dengan bentuk
berikut: /user/first/:n/, di mana dalam parameter
akan terdapat jumlah user yang harus
ditampilkan ke layar.