Thứ Sáu, 21 tháng 12, 2018

CakePHP - Định tuyến

Đị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 tôi sẽ xem cách bạn có thể triển khai các tuyến đường, cách bạn có thể chuyển các đố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 tin config / tuyến.php . Định tuyến có thể được thực hiện theo hai cách.

Khóa đào tạo PHP
Khóa đào tạo PHP

phương pháp tĩnh


xây dựng tuyến đường phạm vi Khóa đào tạo PHP.

Dưới đâ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 chỉ mục của ArticleControll . Trong số hai phương pháp xây dựng tuyến phạm vi cho hiệu suất tốt hơn.

Kết nối tuyến


Phương thức Router :: connect () được sử dụng để kết nối các tuyến. Sau đây là cú pháp của phương thức

static 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 thành phần 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 một tuyến đường

$routes->connect(
   'URL template',
   ['default' => 'defaultValue'],
   ['option' => 'matchingRegex']
);

Thí dụ

Thực hiện thay đổi trong tập tin config / Rout.php như dưới đây.

cấu hình / tuyến.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 TestsControll.php tại src / Controller / TestsControll.php . Sao chép mã sau trong tệp điều khiển.

src / Trình điều khiển / TestsControll.php
<?php
   namespace App\Controller;
   use App\Controller\AppController;

   class TestsController extends AppController{
      public function index(){
      }
   }
?>
Tạo thư mục Kiểm tra theo src / Mẫu và trong thư mục đó tạo tệp Xem cótên là index.ctp . Sao chép mã sau trong tập tin đó.

src / Mẫu / 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

URL trên sẽ mang lại đầu ra sau.

Luận cứ đã qua


Đối số được truyền là đối số được truyền trong URL. Các đối số này có thể được truyền cho hành động của bộ điều khiển. Các đối số được truyền này được đưa cho bộ điều khiển của bạn theo ba cách.

Đố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ẽ phù hợp với các tuyến đường sau.

$routes->connect('tests/:arg1/:arg2', ['controller' => 'Tests', 'action' =>
   'index'],['pass' => ['arg1', 'arg2']]);

Ở đây value1 từ URL sẽ được gán cho arg1 và value2 sẽ được gán cho arg2.

Là mảng được lập chỉ mục bằng số

Khi đối số được chuyển đến 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 sang 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ẽ truyền hai đối số 5 và 6 cho phương thức index () của TestContoder .

Thí dụ

Thực hiện thay đổi trong tệp config / Rout.php như trong chương trình sau.

cấu hình / tuyến.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 TestsControll.php tại src / Controller / TestsControll.php . Sao chép mã sau trong tệp điều khiển.

src / Trình điều khiển / TestsControll.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 thư mục Kiểm tra tại src / Mẫu và trong thư mục đó tạo tệp Xem có tên là index.ctp . Sao chép mã sau trong tập tin đó.

src / Mẫu / 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 />

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

Đăng nhận xét

lập trình PHP cho các nhà phát triển PERL

Chương này sẽ liệt kê những điểm tương đồng và khác biệt chính giữa PHP và PERL. Điều này sẽ giúp các nhà phát triển PERL hiểu PHP rất nhanh...