Yii - URL 路由

  • 简述

    要更改应用程序的默认路由,您应该配置defaultRoute属性。
    第 1 步 - 按以下方式修改config/web.php文件。
    
    <?php
       $params = require(__DIR__ . '/params.php');
       $config = [
          'id' => 'basic',
          'basePath' => dirname(__DIR__),
          'bootstrap' => ['log'],
          'defaultRoute' => 'site/contact',
          'components' => [
             //other code
    ?>
    
    第 2 步- 访问http://localhost:8080/index.php。您将看到默认的联系页面。
    联系页面
    要将您的应用程序暂时置于维护模式,您应该配置yii\web\Application::$catchAll属性。
    第 3 步 - 将以下函数添加到SiteController
    
    public function actionMaintenance() {
       echo "<h1>Maintenance</h1>";
    }
    
    第 4 步 - 然后,按以下方式修改config/web.php文件。
    
    <?php
       $params = require(__DIR__ . '/params.php');
       $config = [
          'id' => 'basic',
          'basePath' => dirname(__DIR__),
          'bootstrap' => ['log'],
          'catchAll' => ['site/maintenance'],
          'components' => [
             //OTHER CODE
    
    第 5 步 - 现在输入您的应用程序的任何 URL,您将看到以下内容。
    维护
  • 创建 URL

    要创建各种类型的 URL,您可以使用yii\helpers\Url::to()辅助方法。以下示例假定正在使用默认 URL 格式。
    第 1 步- 将actionRoutes()方法添加到SiteController
    
    public function actionRoutes() {
       return $this->render('routes');
    }
    
    此方法仅呈现路线视图。
    第 2 步- 在 vi​​ews/site 目录中,使用以下代码创建一个名为routes.php的文件。
    
    <?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>
    
    第 3 步- 键入http://localhost:8080/index.php?r=site/routes,您将看到to()函数的一些用途。
    功能
    根据以下规则,传递给yii\helpers\Url::to()方法的路由可以是相对的或绝对的 -
    • 如果路由为空,则使用当前请求的路由。
    • 如果路由没有前导斜杠,则认为它是相对于当前模块的路由。
    • 如果路由不包含斜线,则认为它是当前控制器的动作 ID。
    yii\helpers\Url帮助类也提供了几个有用的方法。
    第 4 步 - 修改路由视图,如下面的代码所示。
    
    <?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>
    
    第 5 步- 如果您在 Web 浏览器中输入地址http://localhost:8080/index.php?r=site/routes,您将看到以下内容。
    修改后的路线查看输出