在开发中一般遇到的路由都是三级的,基本都是如下格式:
/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的链接