Học lập trình PHP định tuyến ánh xạ URL của bạn đến hành động của bộ điều khiển cụ thể. Trong phần này, chúng ta sẽ thấy cách bạn có thể triển khai các tuyến đường, cách bạn có thể chuyển đối số từ URL sang hành động của bộ điều khiển, cách bạn có thể tạo URL và cách bạn có thể chuyển hướng đến một URL cụ thể.
Thông thường, các tuyến được thực hiện trong tệp config / routes.php . Định tuyến có thể được thực hiện theo hai cách
Đây là một ví dụ trình bày cả hai loại.
Cả hai phương thức sẽ thực thi phương thức index của ArticlesController . Trong số hai phương pháp xây dựng tuyến đường có phạm vi cho hiệu suất tốt hơn.
Có ba đối số cho phương thức Router :: connect ()
Đối số đầu tiên là cho mẫu URL bạn muốn khớp.
Đối số thứ hai chứa các giá trị mặc định cho các phần tử tuyến đường của bạn.
Đối số thứ ba chứa các tùy chọn cho tuyến đường thường chứa các quy tắc biểu thức chính quy.
Đây là định dạng cơ bản của tuyến đường
config / routes.php
src / Controller / TestsController.php
src / Mẫu / Bài kiểm tra / index.ctp
Thực hiện ví dụ trên bằng cách truy cập URL sau.
http: // localhost: 85 / PHP /
URL trên sẽ mang lại kết quả sau.
Đối số được truyền là các đối số được chuyển trong URL. Các đối số này có thể được chuyển đến hành động của bộ điều khiển. Các đối số đã truyền này được trao cho bộ điều khiển của bạn theo ba cách.
Làm đối số cho phương thức hành động
Ví dụ sau đây cho thấy cách chúng ta có thể truyền đối số cho hành động của bộ điều khiển.
Truy cập URL sau - http: // localhost: 85 /PHP / tests / value1 / value2
Điều này sẽ khớp với tuyến đường sau.
Ở đây giá trị 1 từ URL sẽ được gán cho arg1 và value2 sẽ được gán cho arg2.
Câu lệnh trên sẽ chuyển hai đối số 5 và 6 đến phương thức index () của TestController .
config / routes.php
src / Controller / TestsController.php
src / Mẫu / Bài kiểm tra / index.ctp
http: // localhost: 85 / PHP / kiểm tra / Virat / Kunal
Khi thực hiện, URL trên sẽ tạo ra kết quả sau.
Thông thường, các tuyến được thực hiện trong tệp config / routes.php . Định tuyến có thể được thực hiện theo hai cách
phương pháp tĩnh
người xây dựng tuyến đường rải rácĐây là một ví dụ trình bày cả hai loại.
// Using the scoped route builder.
Router::scope('/', function ($routes) {
$routes->connect('/', ['controller' => 'Articles', 'action' => 'index']);
});
// Using the static method.
Router::connect('/', ['controller' => 'Articles', 'action' => 'index']);
Cả hai phương thức sẽ thực thi phương thức index của ArticlesController . Trong số hai phương pháp xây dựng tuyến đường có phạm vi cho hiệu suất tốt hơn.
Kết nối tuyến đường
Router :: connect () phương pháp được sử dụng để kết nối các tuyến đường. Sau đây là cú pháp của phương thứcstatic Cake\Routing\Router::connect($route, $defaults =[], $options =[])
Có ba đối số cho phương thức Router :: connect ()
Đối số đầu tiên là cho mẫu URL bạn muốn khớp.
Đối số thứ hai chứa các giá trị mặc định cho các phần tử tuyến đường của bạn.
Đối số thứ ba chứa các tùy chọn cho tuyến đường thường chứa các quy tắc biểu thức chính quy.
Đây là định dạng cơ bản của tuyến đường
$routes->connect( 'URL template', ['default' => 'defaultValue'], ['option' => 'matchingRegex'] );
Thí dụ
Thực hiện các thay đổi trong tệp config / routes.php như hình dưới đây.config / routes.php
<?php use Cake\Core\Plugin; use Cake\Routing\RouteBuilder; use Cake\Routing\Router; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { $routes->connect('/', ['controller' => 'Tests', 'action' => 'index']); $routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']); $routes->fallbacks('DashedRoute'); }); Plugin::routes();Tạo một tệp TestsController.php tại src / Controller / TestsController.php . Sao chép mã sau trong tệp bộ điều khiển.
src / Controller / TestsController.php
<?php namespace App\Controller; use App\Controller\AppController; class TestsController extends AppController{ public function index(){ } } ?>Tạo thư mục Thử nghiệm dưới src / Mẫu và dưới thư mục đó tạo tệp Xem có tên index.ctp . Sao chép mã sau vào tệp đó.
src / Mẫu / Bài kiểm tra / index.ctp
This is CakePHP tutorial and this is an example of connecting routes.
Thực hiện ví dụ trên bằng cách truy cập URL sau.
http: // localhost: 85 / PHP /
URL trên sẽ mang lại kết quả sau.
![]() |
| Học lập trình PHP |
Đối số đã vượt qua
Đối số được truyền là các đối số được chuyển trong URL. Các đối số này có thể được chuyển đến hành động của bộ điều khiển. Các đối số đã truyền này được trao cho bộ điều khiển của bạn theo ba cách.
Làm đối số cho phương thức hành động
Ví dụ sau đây cho thấy cách chúng ta có thể truyền đối số cho hành động của bộ điều khiển.
Truy cập URL sau - http: // localhost: 85 /PHP / tests / value1 / value2
Điều này sẽ khớp với tuyến đường sau.
$routes->connect('tests/:arg1/:arg2', ['controller' => 'Tests', 'action' =>
'index'],['pass' => ['arg1', 'arg2']]);
Ở đây giá trị 1 từ URL sẽ được gán cho arg1 và value2 sẽ được gán cho arg2.
Như mảng được lập chỉ mục số
Khi đối số được truyền cho hành động của bộ điều khiển, bạn có thể nhận được đối số với câu lệnh sau.$args = $this->request->params[‘pass’]
Các đối số được truyền cho hành động của bộ điều khiển sẽ được lưu trữ trong biến $ args .Sử dụng mảng định tuyến
Đối số cũng có thể được chuyển đến hành động bằng câu lệnh sau$routes->connect('/', ['controller' => 'Tests', 'action' => 'index',5,6]);
Câu lệnh trên sẽ chuyển hai đối số 5 và 6 đến phương thức index () của TestController .
Thí dụ
Thực hiện các thay đổi trong tệp config / routes.php như được hiển thị trong chương trình sau.config / routes.php
<?php use Cake\Core\Plugin; use Cake\Routing\RouteBuilder; use Cake\Routing\Router; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { $routes->connect('tests/:arg1/:arg2', ['controller' => 'Tests', 'action'=> 'index'],['pass' =>['arg1', 'arg2']]); $routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']); $routes->fallbacks('DashedRoute'); }); Plugin::routes();Tạo một tệp TestsController.php tại src / Controller / TestsController.php . Sao chép mã sau trong tệp bộ điều khiển.
src / Controller / TestsController.php
<?php namespace App\Controller; use App\Controller\AppController; class TestsController extends AppController{ public function index($arg1,$arg2){ $this->set('argument1',$arg1); $this->set('argument2',$arg2); } } ?>Tạo một thư mục Các thử nghiệm tại src / Template và dưới thư mục đó tạo một tệp Xem có tên là index.ctp . Sao chép mã sau vào tệp đó.
src / Mẫu / Bài kiểm tra / index.ctp
This is CakePHP tutorial and this is an example of Passed arguments.<br />
Argument-1: <?=$argument1?><br />
Argument-2: <?=$argument2?><br />
Thực hiện ví dụ trên bằng cách truy cập URL sau.http: // localhost: 85 / PHP / kiểm tra / Virat / Kunal
Khi thực hiện, URL trên sẽ tạo ra kết quả sau.
![]() |
| Học lập trình PHP |


Không có nhận xét nào:
Đăng nhận xét