Class yii\rest\ActiveController

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

ActiveController 实现了一组通用的操作, 以支持对 ActiveRecord 的 RESTful 访问.

ActiveRecord 的类应通过 $modelClass 指定, 该类必须实现 yii\db\ActiveRecordInterface.

默认情况下, 支持以下动作:

  • index: 模型数据列表.
  • view: 单个模型的详细信息.
  • create: 创建一个新模型.
  • update: 更新现有模型.
  • delete: 删除现有模型.
  • options: 返回允许的 HTTP 方法.

你可以通过覆盖 actions() 并取消设置相应的动作来禁用其中的一些动作.

要添加新动作, 请通过添加新动作类来覆盖 actions() 或编写新的动作方法. 确保还重写了 verbs() 以正确声明新操作允许的 HTTP 方法.

通常, 你应该重写 checkAccess() 以检查当前用户是否具有针对指定模型执行指定动作的权限.

有关 ActiveController 的更多详细信息和用法信息, 请参阅 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
$createScenario string 用于创建模型的场景. yii\rest\ActiveController
$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
$modelClass string 模型类名称. yii\rest\ActiveController
$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
$updateScenario string 用于更新模型的场景. yii\rest\ActiveController
$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\rest\ActiveController
afterAction() 执行动作后立即调用该方法. yii\base\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\base\Component
bindActionParams() 将参数绑定到动作. yii\base\Controller
canGetProperty() 返回一个值, 指示属性是否可读取. yii\base\Component
canSetProperty() 返回一个值, 指示属性是否可设置. yii\base\Component
checkAccess() 检查当前用户的权限. yii\rest\ActiveController
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\rest\ActiveController
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\ActiveController

事件

隐藏继承的事件

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

属性详情

$createScenario public 属性

用于创建模型的场景.

参见 yii\base\Model::scenarios().

public string $createScenario = \yii\base\Model::SCENARIO_DEFAULT
$modelClass public 属性

模型类名称. 必须设置此属性.

public string $modelClass null
$updateScenario public 属性

用于更新模型的场景.

参见 yii\base\Model::scenarios().

public string $updateScenario = \yii\base\Model::SCENARIO_DEFAULT

方法详情

actions() public 方法

为控制器声明外部动作.

该方法将被覆盖以声明控制器的外部动作. 它应该返回一个数组, 其中数组键是动作ID, 数组值是相应的动作类名称或动作配置数组. 例如:

return [
    'action1' => 'app\components\Action1',
    'action2' => [
        'class' => 'app\components\Action2',
        'property1' => 'value1',
        'property2' => 'value2',
    ],
];

稍后将使用 Yii::createObject() 使用此处提供的配置来创建请求的动作.

public array actions ( )
checkAccess() public 方法

检查当前用户的权限.

你应该重写此方法, 以检查当前用户是否有权对指定的数据模型运行指定的动作.

如果用户没有访问权限, 则应抛出 yii\web\ForbiddenHttpException.

public void checkAccess ( $action, $model null, $params = [] )
$action string

要执行的动作ID.

$model object

要访问的模型. 如果为null, 则表示没有特定的模型正在访问.

$params array

附加参数.

throws yii\web\ForbiddenHttpException

如果用户没有访问权限.

init() public 方法 (可用自版本: 2.0.36)

初始化对象.

在使用给定的配置初始化对象之后, 在构造函数的末尾调用此方法.

public void init ( )
verbs() protected 方法

声明允许的 HTTP 动词.

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

protected array verbs ( )
return array

允许的 HTTP 动词.