Class yii\rest\Controller

继承yii\rest\Controller » yii\web\Controller » yii\base\Controller » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable, yii\base\ViewContextInterface
子类yii\rest\ActiveController
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/rest/Controller.php

Controller 是 RESTful API 控制器类的基类.

Controller 在 RESTful API 请求处理周期中实现以下步骤:

  1. 解决响应格式 (参阅 yii\filters\ContentNegotiator);
  2. 验证请求方法 (参阅 verbs()).
  3. 验证用户 (参阅 yii\filters\auth\AuthInterface);
  4. 速率限制 (参阅 yii\filters\RateLimiter);
  5. 格式化响应数据 (参阅 serializeData()).

有关 Controller 的更多详细信息和用法信息, 请参阅 guide article on rest controllers.

公共属性

隐藏继承的属性

属性类型描述定义在
$action yii\base\Action|null 当前正在执行的动作. yii\base\Controller
$actionParams array 绑定到当前动作的参数. yii\web\Controller
$behaviors yii\base\Behavior[] 附加到此组件的行为列表. 该属性是只读的. yii\base\Component
$defaultAction string 在请求中未指定动作ID时使用的动作ID. yii\base\Controller
$enableCsrfValidation boolean 是否为此控制器中的动作启用 CSRF 验证. yii\rest\Controller
$id string 该控制器的ID. yii\base\Controller
$layout null|string|false 要应用于此控制器的视图的布局的名称. yii\base\Controller
$module yii\base\Module 该控制器所属的模块. yii\base\Controller
$modules yii\base\Module[] 该控制器所在的所有祖先模块. 该属性是只读的. yii\base\Controller
$request yii\base\Request|array|string The request. yii\base\Controller
$response yii\base\Response|array|string The response. yii\base\Controller
$route string 当前请求的路由(模块ID, 控制器ID和动作ID). 该属性是只读的. yii\base\Controller
$serializer string|array 用于创建格式化响应数据的序列化器的配置. yii\rest\Controller
$uniqueId string 以模块ID(如果有)为前缀的控制器ID. 该属性是只读的. yii\base\Controller
$view yii\base\View|yii\web\View 可用于渲染视图或视图文件的视图对象. yii\base\Controller
$viewPath string 包含此控制器的视图文件的目录. yii\base\Controller

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的指定的方法. yii\base\Component
__clone() 在通过克隆现有对象创建对象之后调用此方法. yii\base\Component
__construct() 构造函数. yii\base\Controller
__get() 返回组件属性的值. yii\base\Component
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\Component
__set() 设置组件属性的值. yii\base\Component
__unset() 将组件属性设置为null. yii\base\Component
actions() 为控制器声明外部动作. yii\base\Controller
afterAction() 执行动作后立即调用该方法. yii\rest\Controller
asJson() 发送格式为 JSON 的数据. yii\web\Controller
asXml() 发送格式为 XML 的数据. yii\web\Controller
attachBehavior() 将行为附加到此组件. yii\base\Component
attachBehaviors() 将行为列表附加到组件. yii\base\Component
beforeAction() 在执行动作之前立即调用该方法. yii\base\Controller
behaviors() 返回此组件应该具有的行为列表. yii\rest\Controller
bindActionParams() 将参数绑定到动作. yii\base\Controller
canGetProperty() 返回一个值, 指示属性是否可读取. yii\base\Component
canSetProperty() 返回一个值, 指示属性是否可设置. yii\base\Component
className() 返回此类的完全限定名称. yii\base\BaseObject
createAction() 根据给定的动作ID创建一个动作. yii\base\Controller
detachBehavior() 从组件中分离一个行为. yii\base\Component
detachBehaviors() 分离组件中的所有行为. yii\base\Component
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件. yii\base\Component
findLayoutFile() 查找适用的布局文件. yii\base\Controller
getBehavior() 返回指定的行为对象. yii\base\Component
getBehaviors() 返回附加到此组件的所有行为. yii\base\Component
getModules() 返回此控制器的所有祖先模块. yii\base\Controller
getRoute() 返回当前请求的路由. yii\base\Controller
getUniqueId() 返回控制器的唯一ID. yii\base\Controller
getView() 返回可用于渲染视图或视图文件的视图对象. yii\base\Controller
getViewPath() 返回包含此控制器的视图文件的目录. yii\base\Controller
goBack() 将浏览器重定向到上次访问的页面. yii\web\Controller
goHome() 将浏览器重定向到主页. yii\web\Controller
hasEventHandlers() 返回一个值, 指示是否有任何处理程序附加到指定的事件. yii\base\Component
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\Component
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\Component
init() 初始化对象. yii\base\Controller
off() 从该组件分离现有的事件处理程序. yii\base\Component
on() 将事件处理程序附加到事件. yii\base\Component
redirect() 将浏览器重定向到指定的 URL. yii\web\Controller
refresh() 刷新当前页面. yii\web\Controller
render() 渲染视图并应用布局(如果可用). yii\base\Controller
renderAjax() 渲染视图以响应 AJAX 请求. yii\web\Controller
renderContent() 通过应用布局渲染静态字符串. yii\base\Controller
renderFile() 渲染视图文件. yii\base\Controller
renderPartial() 渲染视图而不使用布局. yii\base\Controller
run() 运行根据路由指定的请求. yii\base\Controller
runAction() 使用指定的动作ID和参数在此控制器内运行一个动作. yii\base\Controller
setView() 设置此控制器使用的视图对象. yii\base\Controller
setViewPath() 设置包含视图文件的目录. yii\base\Controller
trigger() 触发事件. yii\base\Component

受保护的方法

隐藏继承的方法

方法描述定义在
bindInjectedParams() 根据操作方法签名中的类型和名称填充参数. yii\base\Controller
serializeData() 序列化指定的数据. yii\rest\Controller
verbs() 声明允许的 HTTP 动词. yii\rest\Controller

事件

隐藏继承的事件

事件类型描述定义在
EVENT_AFTER_ACTION yii\base\ActionEvent 执行控制器动作后立即触发的事件. yii\base\Controller
EVENT_BEFORE_ACTION yii\base\ActionEvent 在执行控制器动作之前触发的事件. yii\base\Controller

属性详情

$enableCsrfValidation public 属性

是否为此控制器中的动作启用 CSRF 验证. 仅当此属性和 yii\web\Request::$enableCsrfValidation 都为true时才启用 CSRF 验证.

$serializer public 属性

用于创建格式化响应数据的序列化器的配置.

public string|array $serializer 'yii\rest\Serializer'

方法详情

afterAction() public 方法

执行动作后立即调用该方法.

该方法将触发 EVENT_AFTER_ACTION 事件. 该方法的返回值将用作动作返回值.

如果重写这个方法, 则代码应如下所示:

public function afterAction($action, $result)
{
    $result = parent::afterAction($action, $result);
    // 你的自定义代码在这里
    return $result;
}
public mixed afterAction ( $action, $result )
$action yii\base\Action

刚刚执行的动作.

$result mixed

动作返回的结果

return mixed

处理后的动作结果.

behaviors() public 方法

返回此组件应该具有的行为列表.

子类可以重写此方法来指定他们应该具有的行为.

此方法的返回值应该是行为对象数组或由行为名称索引的配置. 行为配置可以是指定行为类的字符串, 也可以是以下结构的数组:

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

Note: 行为类必须从 yii\base\Behavior 扩展. 可以使用名称或匿名方式附加行为. 当使用名称作为数组键时, 使用此名称, 稍后可以使用 getBehavior() 检索该行为, 或者使用 detachBehavior() 进行分离. 匿名行为无法检索或分离.

在此方法中声明的行为将自动(按需)附加到组件上.

public array behaviors ( )
return array

行为配置.

serializeData() protected 方法

序列化指定的数据.

默认实现将基于 $serializer 给出的配置创建一个序列化器. 然后, 它使用序列化器格式化给定的数据.

protected mixed serializeData ( $data )
$data mixed

要序列化的数据.

return mixed

序列化后的数据.

verbs() protected 方法

声明允许的 HTTP 动词.

有关如何声明允许的动词, 请参考 yii\filters\VerbFilter::$actions.

protected array verbs ( )
return array

允许的 HTTP 动词.