📜  Yii-URL路由(1)

📅  最后修改于: 2023-12-03 14:48:40.801000             🧑  作者: Mango

Yii-URL路由

URL路由是Web开发中一个重要的概念,用于指定请求URL应该由哪段代码处理。Yii提供了一个灵活的URL路由系统,支持多种路由方式,可以满足各种需求。

URL路由规则

Yii的URL路由规则由以下三个部分组成:

  1. 路由规则名称
  2. 路由匹配规则
  3. 路由处理规则
[
    'login' => 'site/login',  // 路由规则名称 => 路由处理规则
    'post/<id:\d+>' => 'post/view', // 路由匹配规则 => 路由处理规则
    // ...
]
URL路由配置

Yii的URL路由配置是通过修改config/web.php文件完成的。可以通过components.urlManager.rules配置项来设置路由规则。

return [
    // ...
    'components' => [
        'urlManager' => [
            'class' => 'yii\web\UrlManager',
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                'login' => 'site/login',
                'post/<id:\d+>' => 'post/view',
                // ...
            ],
        ],
    ],
    // ...
];

其中,enablePrettyUrl表示启用美化URL,showScriptName表示隐藏index.php文件。

URL路由匹配

Yii中的URL路由匹配机制遵循以下规则:

  1. 优先匹配配置中的完全匹配规则;
  2. 如果没有完全匹配的规则,按照添加的顺序依次匹配正则表达式规则;
  3. 匹配到第一个规则后,停止匹配。
URL路由处理

Yii中的路由处理分为两个阶段:

  1. 预处理阶段:对路由进行预处理,如重定向、URL参数解析等;
  2. 执行阶段:根据路由处理规则执行相应操作,如Controller/action、Closure等。
URL生成

Yii中,可以通过Url::to()方法快速生成指定路由的URL。

// 生成/login URL
echo Url::to(['site/login']);

// 生成/post/123 URL
echo Url::to(['post/view', 'id' => 123]);
总结

URL路由是Web开发中必不可少的一部分,Yii提供了强大的URL路由配置和处理机制,可以满足各种需求。掌握Yii的URL路由,有助于提高开发效率和代码质量。