请求最终到达的还是action,yii2 中的 action 有两种形式:

  • 控制器中的action
  • 独立的action

控制器中的action

需要以action为前缀,如 actionIndex

  1. <?php
  2. class SiteController extends Controller
  3. {
  4. public function actionHome()
  5. {
  6. return $this->render('home');
  7. }
  8. }

独立action

在 service 文件夹下新建 actions 目录,而后新建一个 DemoAction.php

  1. <?php
  2. namespace service\actions;
  3. use yii\base\Action;
  4. class DemoAction extends Action
  5. {
  6. // 入口
  7. public function run ()
  8. {
  9. // 调用当前控制器
  10. return $this->controller->render('index');
  11. }
  12. }

在 controller 中使用 action

  1. <?php
  2. class SiteController extends Controller
  3. {
  4. public function actions()
  5. {
  6. return [
  7. // 可以用 site/demo访问
  8. 'demo' => 'service\actions\DemoAction'
  9. ];
  10. }
  11. }

独立action,常用于前后端有一样功能的时候,通过 APP_ID 做区别,就可以使得前后端公用一个 action

默认action

yii2 中 一个控制器的默认 action 为 index,修改此设置为 home

  1. <?php
  2. class SiteController extends Controller
  3. {
  4. public $defaultAction = 'home';
  5. public function actionHome()
  6. {
  7. return $this->render('home');
  8. }
  9. }