php yii路由规则,Yii2 路由基本配置

Yii2 支持以下几种路由格式:

```php

/index.php?r=post%2Fview&id=100

/index.php/post/100

/posts/100

```

其中第一个是Yii2默认的路由格式,后面两个需要开启路由美化之后,才能使用的。

下面将详细介绍美化后,怎么设置具体的路由规则。

### 概括

1、URL路由管理器

2、开启美化URL格式

3、路由处理

4、自定义URL格式规则

5、默认路由、缺省路由

6、关于Controller和Action命名匹配路由

------------

#### 1、URL路由管理器

URL管理器提供两种URL格式:

##### 1.1 默认URL格式

默认URL格式使用一个参数r表示路由, 并且使用一般的参数格式表示请求参数。

例如,/index.php?r=post/view&id=100表示路由为post/view,参数id为100。

##### 1.2 美化URL格式

美化URL格式在脚本名称后面使用更多的路径信息表示路由和参数信息。

例如,用适当的URL规则,/index.php/post/100 中附加的路径信息/post/100表示 路由为post/view,参数id为100。

#### 2、开启美化URL格式

##### 2.1 配置文件components节点配置

找到配置文件,高级版Yii2一般在 backend或者frontend目录下面的config目录的main.php文件中

```php

'urlManager' => [

'enablePrettyUrl' => true,

'showScriptName' => false,

'rules' => [

],

],

```

components配置的urlManager 需要开启 美化URL

enablePrettyUrl设置为true即可

#### 3、路由处理

路由处理包含两个步骤:

请求被解析成一个路由和关联的参数;

路由相关的一个控制器动作被创建出来处理这个请求。

##### 3.1 默认URL

例如,/index.php?r=post/view

将会由控制器 PostController这个类下面的 actionView() 方法执行处理 这个请求。

##### 3.2 美化URL

例如,/post/view

将会由控制器 PostController这个类下面的 actionView() 方法执行处理 这个请求。

如果找不到任何匹配的规则,系统将抛出yii\web\NotFoundHttpException异常。

#### 4、自定义URL格式规则

##### 4.1 用正则匹配方式重定向到相应路由

```php

'rules' => [

'y//?' => 'test/index',

'a' => 'test/index',

'a/' => 'test/index',

],

```

解析:

第一个是 匹配 请求 /y/2000/abc 时候,会交给 test/index处理,即交给 TestController类下的actionIndex

第二个是 匹配 请求 /a

第三个是 匹配 请求 /a/123

其中 year、id、category为请求参数,可以在actionIndex方法中,使用Yii::$app->request->get('year')等获取相应的值

##### 4.2 指定controller和action

```php

'rules' => [

'/aaa' => '/index',

'/' => '/index',

'//' => '/',

's' => '/index',

],

```

解析:

第一个 匹配 /post/aaa 或者 /test/aaa 会指向 PostController或者TestController类的actionIndex()方法进行处理 请求;

第二个 匹配 /test/123 会指向 TestController类下面的actionIndex()方法;

第三个 匹配 /post/123 或者 /comment/123 会指向 CommentController类或者PostController类下面的 actionUpdate 或者 actionDelete方法进行处理请求;

第四个 匹配 /posts 或者 comments 会指向 PostController 或者 CommentController 类的actionIndex方法进行处理。

##### 4.3 http方法 规则

```php

'rules' => [

'PUT,POST post/' => 'post/update',

'DELETE post/' => 'post/delete'

'post/' => 'post/view',

],

```

解析:

第一个,支持匹配 PUT或者POST请求 /post/123 时候,会交给 PostController类下的 actionUpdate()方法进行处理;

第二个,支持匹配 DELETE请求 /post/123 时候,交给 PostController类下的actionDelete()方法进行处理;

第三个,支持匹配 GET请求等 /post/123 时候,交给 PostController类下的actionView()方法进行处理。

#### 5、默认路由、缺省路由

默认路由即 当直接请求 Yii2设置的基础域名URL时候 所 指向的路由;

比如,Yii2 项目:http://www.test.com

即请求这个URL时候,默认用于处理的路由

我们一般在配置文件的defaultRoute节点配置:

![](https://blog-1252087744.cos.ap-guangzhou.myqcloud.com/2019-04/Yii2%20%E8%B7%AF%E7%94%B1%E5%9F%BA%E6%9C%AC%E9%85%8D%E7%BD%AE/1.jpg)

'defaultRoute' => 'main/index' //解析

即 请求 http://www.test.com 时,会交给MainController这个类下面的actionIndex()方法进行处理

#### 6、关于Controller和Action命名匹配路由

在PHP开发中,我们的命名规范一般是驼峰式的名词组成类名或者方法名;

在Yii2中,Controller的命名规范一般是 名词大写字母开头+Controller结合;

例如:UserController、UserNameController

action方法的命名一般是 action+名词大写字母开头结合;

例如:actionAdd、actionEditName

对于和Controller或者action结合的名词,有单个名词或组合名词(组合名词即 UserName这种两个大写字母开头组合的)。

这种情况下的路由是这样子的:

比如,UserNameController类下的actionEditName() 方法处理的路由是

```php

/user-name/edit-name

```

------------

### 总结

1、URL路由管理器

2、开启美化URL格式

3、路由处理

4、自定义URL格式规则

5、默认路由、缺省路由

6、关于Controller和Action命名匹配路由

------------

the End.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值