Tham số trong route của MVC trong PHP
Trong bài học trước, các route của chúng ta có địa chỉ cố định. Trên thực tế, cơ chế định tuyến phức tạp hơn - có thể thực hiện sao cho một phần URI của trang sẽ rơi vào các tham số có tên, sau đó có thể truy cập được trong controller.
Giả sử, ví dụ, địa chỉ của chúng ta sẽ trông
như thế này: /test/param1/param2/,
trong đó param1 và param2 là các
chuỗi tùy ý. Đồng thời, chúng ta muốn các địa chỉ dạng
như vậy được xử lý bởi một action của controller.
Để làm điều này, cần nghĩ ra tên cho tham số
và đặt dấu hai chấm trước nó, như thế này:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
Trong trường hợp của chúng ta, kết quả là tất cả các yêu cầu
dạng /test/thamso1/thamso2/
sẽ được chuyển đến action act. Đồng thời,
tham số đầu tiên của action này sẽ
nhận một mảng kết hợp với các tham số:
văn bản, sẽ ở vị trí của tham số đầu tiên,
sẽ rơi vào phần tử mảng với khóa 'var1',
còn văn bản của tham số thứ hai - vào 'var2'.
Giả sử, ví dụ, trong thanh địa chỉ đã nhập
nội dung sau: /test/eee/bbb/. Hãy
xem, tham số đầu tiên của action
sẽ chứa gì:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Hãy tạo controller NumController,
và trong đó - action sum. Hãy để action
này xử lý các địa chỉ dạng sau:
/nums/:n1/:n2/:n3/, trong đó các tham số
sẽ là một số. Hãy thực hiện sao cho
trên màn hình hiển thị tổng của các số được truyền vào.