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 - 在 SiteController 中添加一个 actionRoutes() 方法
public function actionRoutes() {
return $this->render('routes');
}
这个方法只是简单地渲染了 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=site/routes ,你将会看到一些 to() 函数的使用。
通过传递给 yii\helpers\Url::to() 方法的路由可以是相对的或绝对的,根据以下规则确定:
- 如果路由为空,则使用当前请求的路由。
-
如果路由没有前导斜杠,则被视为相对于当前模块的路由。
-
如果路由不包含斜杠,则被视为当前控制器的动作ID。
yii\helpers\Url 助手类还提供了几个有用的方法。
步骤4 - 修改 routes 视图如下代码所示。
<?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 你将会看到以下内容。