YII2 如果设计两级路由的Controller
在开发中一般遇到的路由都是三级的,基本都是如下格式:
/module/controller/action
但是在一些功能方面需要给用户显示两级的路由会更好,比如注册、购物车、等等,更希望的如下的路由:
/cart/add /register/mobile /register/email /user/address
在YII中可以如下实现:
1.在main-local.php中加入如下配置:
$config['controllerMap']['register'] = 'app\modules\register\controllers\RegisterController';
2.在/frontend/modules/register/controllers/目录下创建RegisterController文件。
但这样的话YII其实加载的时候site模块,加载语言包的时候会去frontend/language/目录下找register.php语言包,所以需要在RegisterController的构造函数中修改module,代码如下:
/** * 构造函数 * * @param unknown $id * @param unknown $module * @param unknown $config */ public function __construct ($id, $module, $config = []) { // 获取module的模块对象 $module = \Yii::$app->getModule('register'); parent::__construct($id, $module, $config); }
3.这样路由就变成了两级了
通过这种方式尽量避免出现:user/user/address、register/register/mobile的链接
相关推荐
WasteLand 2020-10-18
Allinputs 2020-08-30
Ashes 2020-06-14
caiyiii 2020-06-14
kxguan 2020-06-14
daillo 2020-06-14
一粒沙里的世界 2020-06-14
ruxingli 2020-06-14
csssy00 2020-06-14
阿佐 2020-06-14
NameWFY 2020-05-28
NameWFY 2020-05-26
Robin罗兵 2020-05-16
caiyiii 2020-04-29
wmsjlihuan 2020-04-26
cbao 2020-04-26
csssy00 2020-04-19
igogo00 2020-03-09