举杯邀月

Yii2路由篇 -- rules规则详解

摘要:yii2中配置路由规则是我们在项目中竟在需要配置的,整理下常用的几种路由规则方便下次参考

yii2中配置路由规则是我们在项目中竟在需要配置的,整理下常用的几种路由规则方便下次参考。

假设我们现在有一个 news 控制器,控制器里有一个 ‘detail’ 方法:


namespace frontend\controllers;

use yii\web\Controller;

class NewsController extends Controller
{

    public function actionDetail()
    {
        $id = \Yii::$app->request->get('id', 0);
        var_dump("this is detail action,id params is {$id}");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14

全匹配模式

'rules' => [
    '/path1/detail' => '/news/detail',
]
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3

请求:/path1/detail
结果:string(36) “this is detail action,id params is 0”

正则匹配模式

'rules' => [
    '/path2/detail/' => '/news/detail',
]
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3

请求:/path2/detail/10
结果: string(37) “this is detail action,id params is 10”

指定请求类型

'rules' => [
    'POST,PUT /path3/detail' => '/news/detail',
]
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3

当前规则只能用 post 、 put 请求

Get 请求:/path3/detail
结果: 报错,Page not found.

Post 请求:/path3/detail
结果: string(36) “this is detail action,id params is 0”

指定域名

'rules' => [
     'http://www.domain.cn/path4/detail' => '/news/detail',
]
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3

请求:/path4/detail
结果:string(36) “this is detail action,id params is 0”

指定后缀、设置默认参数

'suffix' => '.shtml',
'rules' => [
     [
        'pattern' => '/path5/detail/',
        'route' => '/news/detail',
        'suffix' => '.html',
        'defaults' => ['id'=>100]
    ],
]
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9

我们在 urlManager 里设置了后缀 suffix,因此请求url必须以改类型结尾,但是我们可以单独对某个url进行设置。

请求:/path5/detail/1.html
结果:string(36) “this is detail action,id params is 1”

请求:/path5/detail.html
结果:string(38) “this is detail action,id params is 100”

请求:/path5/detail.shtml
结果:报错,Page not found.

我们设置了默认,第二次的请求并没有传参,因此走的是默认值。

作者:举杯邀月

出处: http://www.hug-code.cn/archives/5fc7081a2d443.html

2020-06-22 标签: phpyii2