การใช้พารามิเตอร์ในเส้นทางใน MVC ใน PHP
มาดูการใช้งานที่อธิบายไว้ใน
ตัวอย่างที่เป็นจริงมากกว่า ให้คอนโทรลเลอร์ของเรา
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 สร้าง
แอ็กชัน show ที่จะแสดง
ผู้ใช้ตาม id ที่ระบุ ให้มัน
สามารถเข้าถึงได้ผ่านที่อยู่รูปแบบต่อไปนี้:
/user/:id/
ในคอนโทรลเลอร์ UserController สร้าง
แอ็กชัน info ที่จะแสดง
ชื่อหรืออายุของผู้ใช้ที่กำหนด ให้
แอ็กชันนี้สามารถเข้าถึงได้ผ่านที่อยู่
รูปแบบต่อไปนี้: /user/:id/:key/ โดยที่ key
จะมีค่าเป็น 'name', 'age'
หรือ 'salary'
ในคอนโทรลเลอร์ UserController สร้าง
แอ็กชัน all ที่จะแสดง
รายการผู้ใช้ทั้งหมดบนหน้าจอ ให้แอ็กชันนี้
สามารถเข้าถึงได้ผ่านที่อยู่รูปแบบต่อไปนี้:
/user/all/ (จะไม่มีพารามิเตอร์ใดๆ
ที่นี่)
ในคอนโทรลเลอร์ UserController สร้าง
แอ็กชัน first ที่จะแสดง
รายการผู้ใช้ N คนแรกบนหน้าจอ ให้
แอ็กชันนี้สามารถเข้าถึงได้ผ่านที่อยู่
รูปแบบต่อไปนี้: /user/first/:n/ โดยในพารามิเตอร์
จะเป็นจำนวนผู้ใช้ที่ควร
แสดงบนหน้าจอ