Yii - Định tuyến URL

Để thay đổi lộ trình mặc định của ứng dụng, bạn nên cấu hình defaultRoute bất động sản.

Step 1 - Sửa đổi config/web.php tập tin theo cách sau.

<?php
   $params = require(__DIR__ . '/params.php'); $config = [
      'id' => 'basic',
      'basePath' => dirname(__DIR__),
      'bootstrap' => ['log'],
      'defaultRoute' => 'site/contact',
      'components' => [
         //other code
?>

Step 2 - Phải http://localhost:8080/index.php. Bạn sẽ thấy mặc địnhcontact trang.

Để tạm thời đưa ứng dụng của bạn vào chế độ bảo trì, bạn nên định cấu hình yii\web\Application::$catchAll bất động sản.

Step 3 - Thêm chức năng sau vào SiteController.

public function actionMaintenance() {
   echo "<h1>Maintenance</h1>";
}

Step 4 - Sau đó, sửa đổi config/web.php tập tin theo cách sau.

<?php
   $params = require(__DIR__ . '/params.php');
   $config = [
      'id' => 'basic',
      'basePath' => dirname(__DIR__),
      'bootstrap' => ['log'],
      'catchAll' => ['site/maintenance'],
      'components' => [
         //OTHER CODE

Step 5 - Bây giờ nhập bất kỳ URL nào của ứng dụng của bạn, bạn sẽ thấy như sau.

Tạo URL

Để tạo các loại URL khác nhau, bạn có thể sử dụng yii\helpers\Url::to()phương pháp trợ giúp. Ví dụ sau giả sử định dạng URL mặc định đang được sử dụng.

Step 1 - Thêm một actionRoutes() phương pháp cho SiteController.

public function actionRoutes() {
   return $this->render('routes');
}

Phương pháp này chỉ đơn giản là hiển thị routes lượt xem.

Step 2 - Bên trong thư mục views / site, tạo một tệp có tên routes.php với đoạn mã sau.

<?php
   use yii\helpers\Url;
?>

<h4>
   <b>Url::to(['post/index']):</b>
   <?php
      // creates a URL to a route: /index.php?r = post/index
      echo Url::to(['post/index']);
   ?>
</h4>

<h4>
   <b>Url::to(['post/view', 'id' => 100]):</b>
   <?php
      // creates a URL to a route with parameters: /index.php?r = post/view&id=100
      echo Url::to(['post/view', 'id' => 100]);
   ?>
</h4>

<h4>
   <b>Url::to(['post/view', 'id' => 100, '#' => 'content']):</b>
   <?php
      // creates an anchored URL: /index.php?r = post/view&id=100#content
      echo Url::to(['post/view', 'id' => 100, '#' => 'content']);
   ?>
</h4>

<h4>
   <b>Url::to(['post/index'], true):</b>
   <?php
      // creates an absolute URL: http://www.example.com/index.php?r=post/index
      echo Url::to(['post/index'], true);
   ?>
</h4>

<h4>
   <b>Url::to(['post/index'], 'https'):</b>
   <?php
      // creates an absolute URL using the https scheme: https://www.example.com/index.php?r=post/index
      echo Url::to(['post/index'], 'https');
   ?>
</h4>

Step 3 - Loại http://localhost:8080/index.php?r=site/routes, bạn sẽ thấy một số công dụng của to() chức năng.

Các tuyến đường đi qua yii\helpers\Url::to() phương pháp có thể tương đối hoặc tuyệt đối theo các quy tắc sau:

  • nếu tuyến đường trống, tuyến đường hiện được yêu cầu sẽ được sử dụng.

  • nếu tuyến đường không có dấu gạch chéo ở đầu, nó được coi là một tuyến đường liên quan đến mô-đun hiện tại.

  • nếu tuyến đường không chứa dấu gạch chéo, nó được coi là một ID hành động của bộ điều khiển hiện tại.

Các yii\helpers\Url lớp trợ giúp cũng cung cấp một số phương thức hữu ích.

Step 4 - Sửa đổi routes Xem như đã cho trong đoạn mã sau.

<?php
   use yii\helpers\Url;
?>

<h4>
   <b>Url::home():</b>
   <?php
      // home page URL: /index.php?r=site/index
      echo Url::home();
   ?>
</h4>
 
<h4>
   <b>Url::base():</b>
   <?php
      // the base URL, useful if the application is deployed in a sub-folder of the Web root
      echo Url::base();
   ?>
</h4>
 
<h4>
   <b>Url::canonical():</b>
   <?php
      // the canonical URL of the currently requested URL
      // see https://en.wikipedia.org/wiki/Canonical_link_element
      echo Url::canonical();
   ?>
</h4>
 
<h4>
   <b>Url::previous():</b>
   <?php
      // remember the currently requested URL and retrieve it back in later requests
      Url::remember();
      echo Url::previous();
   ?>
</h4>

Step 5 - Nếu bạn nhập địa chỉ http://localhost:8080/index.php?r=site/routes trong trình duyệt web, bạn sẽ thấy như sau.