yii2.0控制器

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/m0_38004619/article/details/102369328
  • 控制器部署

[
    'controllerMap' => [
        // 用类名申明 "account" 控制器
        'account' => 'app\controllers\UserController',

        // 用配置数组申明 "article" 控制器
        'article' => [
            'class' => 'app\controllers\PostController',
            'enableCsrfValidation' => false,//是否开启csrf验证
        ],
    ],
]

默认控制器

[
    'defaultRoute' => 'main',
]

动作参数

http://hostname/index.php?r=post/view&id=123: $id 会填入'123', $version 仍为 null 空因为没有

namespace app\controllers;

use yii\web\Controller;

class PostController extends Controller
{
    public function actionView($id, $version = null)
    {
        // ...
    }
}

默认动作

namespace app\controllers;

use yii\web\Controller;

class SiteController extends Controller
{
    public $defaultAction = 'home';

    public function actionHome()
    {
        return $this->render('home');
    }
}

控制器生命周期

  1. 在控制器创建和配置后,yii\base\Controller::init() 方法会被调用。
  2. 控制器根据请求操作ID创建一个操作对象:
    1. 如果操作ID没有指定,会使用default action ID默认操作ID;
    2. 如果在action map找到操作ID, 会创建一个独立操作;
    3. 如果操作ID对应操作方法,会创建一个内联操作;
    4. 否则会抛出yii\base\InvalidRouteException异常。
  3. 控制器按顺序调用应用主体、模块(如果控制器属于模块)、 控制器的 beforeAction() 方法;
    1. 如果任意一个调用返回false,后面未调用的beforeAction()会跳过并且操作执行会被取消;
    2. 默认情况下每个 beforeAction() 方法会触发一个 beforeAction 事件,在事件中你可以追加事件处理操作;
  4. 控制器执行操作:
    1. 请求数据解析和填入到操作参数;
  5. 控制器按顺序调用控制器、模块(如果控制器属于模块)、应用主体的 afterAction() 方法;
    1. 默认情况下每个 afterAction() 方法会触发一个 afterAction 事件, 在事件中你可以追加事件处理操作;
  6. 应用主体获取操作结果并赋值给响应.

猜你喜欢

转载自blog.csdn.net/m0_38004619/article/details/102369328