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,您可以使用 yii \ helpers \ Url :: to() 辅助方法。以下示例假定正在使用默认的URL格式。

第1步 - 添加一个 actionRoutes() 方法到 SiteController

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

该方法只是呈现 路线 视图。

第2步 - 在views / 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 =站点/路由 ,您将看到 to() 函数的一些用法。

功能

根据以下规则,传递给 yii \ helpers \ Url :: to() 方法的路由可以是相对或绝对的 -

  • 如果路线为空,则将使用当前请求的路线。

  • 如果路线没有前导斜线,则认为它是相对于当前模块的路线。

  • 如果路由不包含斜线,则认为它是当前控制器的操作ID。

警予\佣工\网址 助手类,还提供了一些有用的方法。

第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 ,您将看到以下内容。

修改的路线查看输出

下一章:Yii URL的规则

如果是 yii \ web \ UrlRule, 则URL规则是一个实例。该 urlManager 组件使用在其声明的URL规则规定 ,当启用了漂亮的URL格式属性。为解析请求,URL管理器按照它们声明的顺序获取规则并 ...