พารามิเตอร์ในเส้นทางใน MVC ใน PHP
ในบทเรียนที่แล้ว เส้นทางของเรามีที่อยู่ ตายตัว ในความเป็นจริงกลไกการกำหนดเส้นทางนั้น ซับซ้อนกว่านี้ - สามารถทำได้ให้ส่วนหนึ่งของ URI ของหน้าตกไปอยู่ในพารามิเตอร์ที่มีชื่อ, ซึ่งสามารถเข้าถึงได้ในคอนโทรลเลอร์ต่อไป
สมมติว่า ที่อยู่ของเราจะมีลักษณะ
แบบนี้: /test/param1/param2/,
โดยที่ param1 และ param2 เป็นสตริง
ใดๆ ในขณะเดียวกันเราต้องการให้ที่อยู่รูปแบบนี้
ถูกประมวลผลโดยหนึ่งการกระทำของคอนโทรลเลอร์
สำหรับสิ่งนี้ควรคิดชื่อพารามิเตอร์ขึ้นมา
และวางเครื่องหมายโคลอนข้างหน้า แบบนี้:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
ในกรณีของเราจะได้ผลลัพธ์ว่า คำขอทั้งหมด
รูปแบบ /test/พารามิเตอร์1/พารามิเตอร์2/
จะตกไปยังการกระทำ act ในขณะ
เดียวกันในพารามิเตอร์แรกของการกระทำนี้จะ
ตกไปเป็นอาเรย์เชื่อมโยงกับพารามิเตอร์:
ข้อความ ที่จะอยู่แทนที่พารามิเตอร์แรก,
จะตกไปในองค์ประกอบอาเรย์ที่มีคีย์ 'var1',
และข้อความของพารามิเตอร์ที่สอง - ไปที่ 'var2'
สมมติว่า ในแถบที่อยู่พิมพ์
ดังต่อไปนี้: /test/eee/bbb/ มาดูกัน
ว่าพารามิเตอร์แรกของการกระทำ
จะมีอะไรบ้าง:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
สร้างคอนโทรลเลอร์ NumController,
และในนั้น - การกระทำ sum ให้การกระทำนี้
ประมวลผลที่อยู่ในรูปแบบต่อไปนี้:
/nums/:n1/:n2/:n3/, โดยที่พารามิเตอร์
จะเป็นตัวเลขบางจำนวน จัดการให้
บนหน้าจอแสดงผลรวมของตัวเลขที่ส่งมา