Class yii\web\Controller

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

Controller 是 Web 控制器的基类.

有关 Controller 的更多详细信息和使用信息, 请参阅 权威指南 - 应用结构 - 控制器(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\web\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\web\Request yii\web\Controller
$response yii\web\Response yii\web\Controller
$route string 当前请求的路由(模块ID, 控制器ID和动作ID). 该属性是只读的. yii\base\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\base\Controller
asJson() 发送格式为 JSON 的数据. yii\web\Controller
asXml() 发送格式为 XML 的数据. yii\web\Controller
attachBehavior() 将行为附加到此组件. yii\base\Component
attachBehaviors() 将行为列表附加到组件. yii\base\Component
beforeAction() 在执行动作之前立即调用该方法. yii\web\Controller
behaviors() 返回此组件应该具有的行为列表. yii\base\Component
bindActionParams() 将参数绑定到动作. yii\web\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

事件

隐藏继承的事件

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

属性详情

$actionParams public 属性

绑定到当前动作的参数.

public array $actionParams = []
$enableCsrfValidation public 属性

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

$request public 属性
public yii\web\Request $request null
$response public 属性

方法详情

asJson() public 方法 (可用自版本: 2.0.11)

发送格式为 JSON 的数据.

此方法是发送格式为 JSON 的数据的快捷方式.

在配置 格式 并设置应格式化的 数据 之后, 它将返回应用程序 响应 组件. 一个常见的用法是:

return $this->asJson($data);

参见:

public yii\web\Response asJson ( $data )
$data mixed

要格式化的数据.

return yii\web\Response

一个配置为发送格式为 XML 的$data的响应(response).

asXml() public 方法 (可用自版本: 2.0.11)

发送格式为 XML 的数据.

此方法是发送格式为 XML 的数据的快捷方式.

在配置 格式 并设置应格式化的 数据 之后, 它将返回应用程序 响应 组件. 一个常见的用法是:

return $this->asXml($data);

参见:

public yii\web\Response asXml ( $data )
$data mixed

要格式化的数据.

return yii\web\Response

一个配置为发送格式为 XML 的$data的响应(response).

beforeAction() public 方法

在执行动作之前立即调用该方法.

该方法将触发 EVENT_BEFORE_ACTION 事件. 该方法的返回值将决定动作是否应继续运行.

如果该动作不执行, 则应通过提供必要的输出或重定向请求, 在beforeAction代码内部处理该请求. 否则, 响应将为空.

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

public function beforeAction($action)
{
    // 如果你希望代码在 [[EVENT_BEFORE_ACTION]] 事件触发的动作过滤器之前运行(eg. PageCache 或 AccessControl), 请在此处输入你的自定义代码.

    if (!parent::beforeAction($action)) {
        return false;
    }

    // 其他自定义代码

    return true; // 或者`false`表示不运行该动作
}
public boolean beforeAction ( $action )
$action yii\base\Action

要执行的动作.

return boolean

该动作是否应该继续运行.

bindActionParams() public 方法

将参数绑定到动作.

yii\base\Action 在使用给的参数开始运行时会调用此方法. 该方法将检查动作所需的参数名称, 并根据要求返回提供的参数. 如果缺少任何参数, 将会抛出异常.

public array bindActionParams ( $action, $params )
$action yii\base\Action

与参数绑定的动作.

$params array

要绑定到动作的参数.

return array

动作可以运行的有效参数.

throws yii\web\BadRequestHttpException

如果缺少参数或参数无效.

goBack() public 方法

将浏览器重定向到上次访问的页面.

你可以通过直接返回 yii\web\Response 在动作种使用此方法:

// 停止执行此动作并重定向到上次访问的页面
return $this->goBack();

为了使这个功能起作用, 你必须在适当的地方 设置返回 URL.

参见 yii\web\User::getReturnUrl().

public yii\web\Response goBack ( $defaultUrl null )
$defaultUrl string|array

如果它以前未设置, 则是默认的返回 URL. 如果为null, 并且以前未设置返回 URL, 将被重定向到 yii\web\Application::$homeUrl. 关于 URL 的接受格式, 请参阅 yii\web\User::setReturnUrl().

return yii\web\Response

当前响应对象(response).

goHome() public 方法

将浏览器重定向到主页.

你可以通过直接返回 yii\web\Response 在动作种使用此方法:

// 停止执行此动作并重定向到主页
return $this->goHome();
public yii\web\Response goHome ( )
return yii\web\Response

当前响应对象(response).

redirect() public 方法

将浏览器重定向到指定的 URL.

此方法是 yii\web\Response::redirect() 的快捷方式.

你可以通过直接返回 yii\web\Response 在动作种使用它:

// 停止执行此动作并重定向到登录页面
return $this->redirect(['login']);
public yii\web\Response redirect ( $url, $statusCode 302 )
$url string|array

要重定向到的 URL. 这可以采用以下格式之一:

  • 一个表示 URL 的字符串 (eg. "http://example.com")
  • 一个表示 URL 别名的字符串 (eg. "@example.com")
  • 一个格式为[$route, ...name-value pairs...]的数组 (eg. ['site/index', 'ref' => 1]) yii\helpers\Url::to() 将被用于将数组转换为一个 URL.

任何以单个正斜杠/开头的相对URL将通过在当前请求的主机信息之前添加一个绝对 URL 来转换为绝对 URL.

$statusCode integer

HTTP 状态码. 默认为 302. 有关 HTTP 状态代码的详细信息, 请参阅 https://tools.ietf.org/html/rfc2616#section-10.

return yii\web\Response

当前响应对象(response).

refresh() public 方法

刷新当前页面.

此方法是 yii\web\Response::refresh() 的快捷方式.

你可以通过直接返回 yii\web\Response 在动作种使用它:

// 停止执行此动作并刷新当前页面
return $this->refresh();
public yii\web\Response refresh ( $anchor '' )
$anchor string

应该附加到重定向 URL 的锚. 默认为空. 如果你想指定它, 请确保锚点以'#'开头.

return yii\web\Response

响应对象(response)本身.

renderAjax() public 方法

渲染视图以响应 AJAX 请求.

此方法与 renderPartial() 类似, 不同之处在于它将使用注册到视图的 JS/CSS 脚本和文件注入到渲染结果中. 因此, 你应该使用此方法而不是 renderPartial() 来渲染视图以响应 AJAX 请求.

public string renderAjax ( $view, $params = [] )
$view string

视图名称. 有关如何指定视图名称, 请参阅 render().

$params array

在视图中应该可用的参数(name-value 对).

return string

渲染结果.