记一个 Yii2 中模块嵌套的配置方法,支持URL美化

Yii2 模块嵌套这一类的文章网上有很多了,也看了不少,只是觉得实用合适的才是最好的,我自己是这么配置的,记一下以防忘记。

在做一个前后端分离项目的后台时,后台的API需要加入版本识别,参考了很多文章,还是觉得用Yii的子模块划分版本最实际,也好维护一点。

假设v1版本有这样几个模块(随便写的,不要太在意细节):

  • v1
    • admin
      • menu
        • test

他们的关系是嵌套的,那访问最后一个test模块的Index控制器里的Test方法,理论上路径是这样的:

/v1/admin/menu/test/index/test

目录结构大概是这样的:
backend
└ ┈modules
 └ ┈ v1
  └ ┈ modules
   └ ┈admin
    └ ┈ modules
     └ ┈ menu
      └ ┈ modules
       └ ┈ test
        └ ┈ controllers
          └ ┈ IndexController.php

要支持四级的模块嵌套,不配置一下是不能成功访问的,先来配置一下 main.php 中的 modules :

	'modules' => [
        'v1' => [
            'class' => 'backend\modules\v1\Module',
            'modules' => [
                'admin' => [
                    'class' => 'backend\modules\v1\modules\admin\Module',
                    'modules' => [
                        'menu' => [
                            'class' => 'backend\modules\v1\modules\admin\modules\menu\Module',
                            'modules' => [
                                'test' => [
                                    'class' => 'backend\modules\v1\modules\admin\modules\menu\modules\test\Module',
                                ]
                            ]
                        ]
                    ]
                ],
            ],
        ],
    ],

这里没有采用在Module.php中把子模块写死的方法,这里使用配置文件的写法是因为可以利用程序写入配置文件,能灵活的控制模块的取舍。

模块配置完了,现在该配置URL美化了,如下:

	'components' => [
        'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
                [
                	//一个规则就解决了
                    'pattern' => '<path:([\w-]+\/?)+>',
                    'route' => '<path>',
                ],
            ]
        ],
    ],

一条规则,就解决了无限子模块嵌套的URL美化,至此,Yii2 子模块嵌套就可以正常访问了。如果在程序上实现后台安装卸载模块,并自动写入配置,理论上你可以实现无限制的模块嵌套。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值