去年写过一篇关于
yii2-router
的博文,当时完全参照yii2
官网去写,结果可想而知,没人能看懂,包括我自己。今天偶然翻起,所以决定删了旧的,再重新整理一次
一、 路由的概念
首先梳理一下GET
请求与相应的简单过程(针对php
后端):①客户端发出GET
请求(URL
);②后端服务器根据 URL
, 检查指定请求是一个静态文件(请求的文件真实存在于服务端),那么直接返回该文件,如果请求的文件不存在,那么就需要用到路由
,根据路由规则来确定怎么处理请求,怎么查询数据库,怎么生成页面;③将上步生成的页面返回给客户端。由此可见,路由的作用其实就是分发请求。如果没理解也没关系,继续向下看。
关于上述第②步中 “怎么处理请求”、“怎么查询数据库”、“怎么生成页面”,实际就是典型的
MVC
结构;M
指数据库模型,V
视图,也就是怎么生成页面,C
控制器。在MVC
中,控制器整合业务流(或者说是数据流)的处理流程,视图 和 模型 主要起辅助作用。所以也就是说,路由
的作用就是为了找到URL
请求对应的控制器
,并解析出URL
请求参数给控制器,最后控制器负责处理客户端请求。
一个网站,一般会都会留有两个后端入口,
index.php
和admin.php
,index.php
供浏览者访问,另一个供站长做后台管理。有人问,必须留两个吗?答案自然是否定的,留多少都成,哪怕一个请求一个接口,但是为了网站容易管理,一般都是留两个。
二、 yii2
配置
我的 yii2
项目结构如下截图:
其它文件都已删除,关于 router
的例子,只需要修改 config/web.php
即可满足,以下是每个文件的内容
1.config/web.php
<?php
$config = [
'id' => 'demo',
'basePath' => dirname(__DIR__),
'language' => 'zh-cn',
'aliases' => [
'@bower' => '@vendor/bower-asset',
'@npm' => '@vendor/npm-asset',
],
'components' => [
'errorHandler' => [
'errorAction' => 'site/error',
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
/* url 管理器 */
'urlManager' => [
// 'enablePrettyUrl' => true, // 美化 url
'showScriptName'