Yii2路由

路由是什么呢?

我们点击跑起来的yii2 ,首页导航栏有一些链接,点了之后看看网址栏的变化

刚开的时候由于各种配置和约定 除了域名看不到其他,点击链接后发现

home -> xxxx/index.php?r=site%2Findex

about -> xxxx/index.php?r=site%2Fabout

...

xxxx表示域名 这里网址UrlEncode编码了地址里的特殊字符或中文会被转码 里面 / 被转成了 %2F ,替换一下依然正常访问的。

其实就是网址中的的指向部分叫路由。

最早PHP程序,就是一个一个文件写的啊 xxxx/a.php 、xxxx/b.php ....,为什么改这样xxxx/index.php?r=a 、xxxx/index.php?r=b,快吗?不不不是慢,路由是要中转一道的,思想就是switch的分支思想,譬如每个文件都要连数据库,连库代码就可以放到入口文件头部,入口文件中间启用一个分支路由根据网址传进来的参数去require相应的功能文件,虽然慢但是便于组织代码啊,那点忽略不计的效率不值一提。就相当于每次打到总机这里就是入口文件index.php,然后根据拨进来的分号(路由参数)这里就是r的参数,来展示相应的页面。

我们前面跑起来的时候是指向了frontend应用,所以我们看到的 xxxx/index.php?r=site/index 这里的index.php 就是下面这个入口文件

 /home/wwwroot/yii-project/frontend/web/index.php

 而后面的?r=site/index 就是路由 ,那它这是指哪打哪呢?我们看下图

路由是和控制器关联的
控制器在controller文件夹 里面有一个SiteController.php (大写开头命名带Controller 这是约定)这里site就是上面路由中的site

打开这个文件我们找到了这个上图的 actionIndex() 这个函数 就是叫动作(action开头后面大写开头这是约定)这里的index就是路由中的index

找到路由原理 接下来我们依葫芦画瓢,在SiteController.php里面加上这么一段

public function actionIndex()
{
    return $this->render('index');
}

//测试一下路由
public function actionDemo()
{
    exit("走你!");
}

 

 我们访问一下  xxxx/index.php?r=site/demo

评论区
登陆 后评论!