yii框架之模块下的$defaultRoute

PHP 2017-07-26

对于 Web applications 网页应用, 默认值为 site对应 SiteController控制器,并使用默认的动作。 因此你不带路由的访问应用,如:localhost/basic/web/index.php访问入口脚本,默认显示app\controllers\SiteController::actionIndex()的结果。

$defaultRoute是Module模块下的公共属性,默认值为default
它的作用是模块的下的默认路由。
如果在入口脚本里请求的是一个模块,而没有写上控制器和动作,那么就会调用$defaultRoute这个默认路由
如果没有认为给它赋其他值,那么它对于的就是DefaultController
如果没有给默认路由写上action动作,那么它会去调用yii\base\Controller::$defaultAction控制器下的默认动作。
$defaultAction的默认值为index
总的来说,$defaultRoute可以赋值为子模块,赋值为控制器,赋值为动作
举个例子:http://localhost/basic/web/index.php?r=login

  • 有一个模块名为login
    如果项目里有定义一个模块名为login,那么这个请求就会是调用到模块里的$defaultRoute,如果没有修改它的默认值,那么请求的就是login模块下的DefaultController中的actionIndex方法
    如果你在login模块下已经修改了$defaultRoute,比如$defaultRoute = 'login';,那么上面的请求就会是login模块下的LoginController中的actionIndex方法
    如果赋值为$defaultRoute = 'login/test';那么上面的请求就会是login模块下的LoginController中的actionTest方法
  • 不存在一个模块名为login
    这种情况下不会去调用$defaultRoute,那么r=login就相当于去找一个LoginController,由于没有指定的action动作,所以会执行$defaultAction的默认值,也就是actionIndex

本文由 阿涛 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论