该继承哪个控制器?

很多刚接触yii的小伙伴看到编辑器的提示之后,就一脸 ??? ,我该继承哪个控制器,为什么有这么多控制器类型?
image.png
其实为了更好地实现 “各司其职”,将几种 Controller 区分开来,其实仔细看看也知道大概意思,只不过可能不太明确其使用场景。

Controller 介绍

base\Controller

在 Yii2 中大多数以 base 开头的,都是一个公共基类,天生就是被别人继承的,所以在我们自己开发的时候一些天生被继承的类,也可以沿用其规范,放在新建的base目录下,如 common\base\ActiveRecord

console\Controller

控制台程序需要继承此 Controller,用于 cli 下命令的执行,比如 使用 crontab 去执行一个定时任务就需要写在 console模块下(adnvance版)

rest\Controller

开发 restful 应用的时候需要继承此 Controller。

web\Controller

是了,最常规的的开发web程序的应用,应该继承此 Controller。

Controller 路由

  • 后缀需要带有 Controller,如 PostController
    • 其路由为 post
  • 多个单词,以 - 连接,如 PostCommentController
    • 其路由为 post-comment

修改默认控制器

现在默认的控制器为 SiteController,然后有的时候强迫症一上头就想用 IndexController 作为默认控制器,访问域名的时候默认就去找 IndexController 控制器,可以修改其应用配置

如 frontend/config/main-local.php

  1. <?php
  2. return [
  3. 'defaultRoute' => 'index',
  4. 'components' => [......]
  5. ]