类 ErrorController
错误处理控制器
ErrorHandler 使用的控制器来渲染错误视图。
属性摘要
-
$CheckHttpCache public @property
Cake\Controller\Component\CheckHttpCacheComponent
-
$Flash public @property
Cake\Controller\Component\FlashComponent
-
$FormProtection public @property
Cake\Controller\Component\FormProtectionComponent
-
$_components protected
Cake\Controller\ComponentRegistry|null
用于创建组件的 ComponentRegistry 实例
-
$_eventClass protected
string
新事件对象的默认类名。
-
$_eventManager protected
Cake\Event\EventManagerInterface|null
此对象用于调度内部事件的 Cake\Event\EventManager 实例。
-
$_tableLocator protected
Cake\ORM\Locator\LocatorInterface|null
表定位器实例
-
$_viewBuilder protected
Cake\View\ViewBuilder|null
正在使用的视图构建器实例。
-
$autoRender protected
bool
设置为 true 以在操作逻辑后自动渲染视图。
-
$defaultTable protected
string|null
此对象的默认表别名。
-
$middlewares protected
array
中间件列表。
-
$name protected
string
此控制器的名称。控制器名称是复数的,以它们操作的模型命名。
-
$paginate protected
array<string, mixed>
分页设置。
-
$plugin protected
string|null
自动设置为插件的名称。
-
$request protected
Cake\Http\ServerRequest
一个 \Cake\Http\ServerRequest 对象的实例,其中包含有关当前请求的信息。此对象包含有关请求的所有信息,以及用于读取有关请求的其他信息的几种方法。
-
$response protected
Cake\Http\Response
一个 Response 对象的实例,其中包含有关即将发出的响应的信息
-
$viewClasses protected
list<string>
用于内容协商的视图类。
方法摘要
-
__construct() public
构造函数。
-
__get() public
默认表的魔术访问器。
-
_templatePath() protected
根据控制器名称和请求前缀获取 templatePath。
-
addViewClasses() public
添加此控制器可以与之进行内容协商的视图类。
-
afterFilter() public
在运行并渲染控制器操作后调用。
-
beforeFilter() public
在控制器操作之前调用。您可以使用此方法来配置和自定义组件或执行在每个控制器操作之前需要发生的逻辑。
-
beforeRedirect() public
当控制器 的 redirect 方法被调用但还没有执行任何进一步的操作之前,beforeRedirect 方法被调用。
-
beforeRender() public
beforeRender 回调。
-
chooseViewClass() protected
使用在此控制器上定义的视图类根据内容类型协商进行视图选择。
-
components() public
获取此控制器的组件注册表。
-
createView() public
根据当前配置构造视图类实例。
-
disableAutoRender() public
禁用自动操作渲染。
-
dispatchEvent() public
用于创建和调度事件的包装器。
-
enableAutoRender() public
启用自动操作渲染。
-
fetchTable() public
获取表实例的便捷方法。
-
getAction() public
获取要由 ControllerFactory 调用的操作的闭包。
-
getEventManager() public
返回此对象的 Cake\Event\EventManager 管理器实例。
-
getMiddleware() public
获取要应用于此控制器的中间件。
-
getName() public
返回控制器名称。
-
getPlugin() public
返回插件名称。
-
getRequest() public
获取请求实例。
-
getResponse() public
获取响应实例。
-
getTableLocator() public
获取表定位器。
-
implementedEvents() public
返回将在控制器生命周期中触发的所有事件的列表。您可以覆盖此函数以添加自己的侦听器回调
-
initialize() public
初始化挂钩方法。
-
invokeAction() public
调度控制器操作。
-
isAction() public
检查操作是否可以通过 URL 访问的方法。
-
isAutoRenderEnabled() public
如果操作应自动渲染,则返回 true。
-
loadComponent() public
将组件添加到控制器的注册表。
-
log() public
将消息写入 Log 的便捷方法。有关写入日志的更多信息,请参见 Log::write()。
-
middleware() public
为控制器注册中间件。
-
paginate() public
处理表对象中记录的分页。
-
redirect() public
重定向到给定的 $url,在关闭 $this->autoRender 后。
-
referer() public
返回此请求的引用 URL。
-
render() public
实例化正确的视图类,将数据传递给它,并使用它来渲染视图输出。
-
set() public
保存一个变量或一个关联变量数组,以便在模板中使用。
-
setEventManager() public
返回此对象的 Cake\Event\EventManagerInterface 实例。
-
setName() public
设置控制器名称。
-
setPlugin() public
设置插件名称。
-
setRequest() public
设置请求对象并根据请求内容配置多个控制器属性。控制器充当某些视图变量的代理,这些变量也必须在此处更新。将设置的属性为
-
setResponse() public
设置响应实例。
-
setTableLocator() public
设置表定位器。
-
shutdownProcess() public
执行此控制器的各种关闭过程。以正确的顺序触发组件和控制器回调。
-
startupProcess() public
执行此控制器的启动过程。以正确的顺序触发组件和控制器回调。
-
viewBuilder() public
获取正在使用的视图构建器。
-
viewClasses() public
获取可用于内容类型协商的备用视图类。
方法详细
__construct() ¶ public
__construct(Cake\Http\ServerRequest $request, string|null $name = null, Cake\Event\EventManagerInterface|null $eventManager = null, Cake\Controller\ComponentRegistry|null $components = null)
构造函数。
根据约定设置多个属性(如果它们为空)。要覆盖 CakePHP 使用的约定,您可以在类声明中定义属性。
参数
-
Cake\Http\ServerRequest
$request 此控制器请求对象。但预期使用请求参数的功能将不起作用。
-
string|null
$name 可选 覆盖在使用模拟时测试中很有用的名称。
-
Cake\Event\EventManagerInterface|null
$eventManager 可选 事件管理器。默认为新实例。
-
Cake\Controller\ComponentRegistry|null
$components 可选 要使用的 ComponentRegistry。默认为新实例。
__get() ¶ public
__get(string $name): Cake\Controller\ComponentCake\ORM\Table|null
默认表的魔术访问器。
参数
-
string
$name 属性名称
返回值
Cake\Controller\ComponentCake\ORM\Table|null
addViewClasses() ¶ public
addViewClasses(list<string> $viewClasses): $this
添加此控制器可以与之进行内容协商的视图类。
每个视图类都必须实现 getContentType()
钩子方法才能参与协商。
参数
-
list<string>
$viewClasses 视图类列表。
返回值
$this
另请参阅
afterFilter() ¶ public
afterFilter(Cake\Event\EventInterfaceCake\Controller\Controller> $event): Cake\Http\Response|null|void
在运行并渲染控制器操作后调用。
参数
-
Cake\Event\EventInterfaceCake\Controller\Controller>
$event 事件实例
返回值
Cake\Http\Response|null|void
链接
beforeFilter() ¶ public
beforeFilter(Cake\Event\EventInterfaceCake\Controller\Controller> $event): Cake\Http\Response|null|void
在控制器操作之前调用。您可以使用此方法来配置和自定义组件或执行在每个控制器操作之前需要发生的逻辑。
参数
-
Cake\Event\EventInterfaceCake\Controller\Controller>
$event 事件实例
返回值
Cake\Http\Response|null|void
链接
beforeRedirect() ¶ public
beforeRedirect(Cake\Event\EventInterfaceCake\Controller\Controller> $event, Psr\Http\Message\UriInterface|array|string $url, Cake\Http\Response $response): Cake\Http\Response|null|void
当控制器 的 redirect 方法被调用但还没有执行任何进一步的操作之前,beforeRedirect 方法被调用。
如果事件被停止,控制器将不会继续重定向请求。$url 和 $status 变量与控制器的对应方法具有相同的含义。您可以将事件结果设置为响应实例或使用控制器的响应实例修改重定向位置。
参数
-
Cake\Event\EventInterfaceCake\Controller\Controller>
$event 事件实例
-
Psr\Http\Message\UriInterface|array|string
$url 指向应用内其他位置的字符串或基于数组的 URL,或绝对 URL
-
Cake\Http\Response
$response 响应对象。
返回值
Cake\Http\Response|null|void
链接
beforeRender() ¶ public
beforeRender(Cake\Event\EventInterfaceCake\Controller\Controller> $event): Cake\Http\Response|null|void
beforeRender 回调。
参数
-
Cake\Event\EventInterfaceCake\Controller\Controller>
$event 事件。
返回值
Cake\Http\Response|null|void
chooseViewClass() ¶ protected
chooseViewClass(): string|null
使用在此控制器上定义的视图类根据内容类型协商进行视图选择。
返回值
string|null
components() ¶ public
components(): Cake\Controller\ComponentRegistry
获取此控制器的组件注册表。
返回值
Cake\Controller\ComponentRegistry
createView() ¶ public
createView(string|null $viewClass = null): Cake\View\View
根据当前配置构造视图类实例。
参数
-
string|null
$viewClass 可选 要实例化的 View 类的可选命名空间类名。
返回值
Cake\View\View
抛出
Cake\View\Exception\MissingViewException
如果未找到视图类。
dispatchEvent() ¶ public
dispatchEvent(string $name, array $data = [], TSubject|null $subject = null): Cake\Event\EventInterface<TSubject>
用于创建和调度事件的包装器。
返回已分派的事件。
参数
-
string
$name 事件名称。
-
array
$data 可选 您希望通过此事件传输的任何值,监听器都可以读取该值。
-
TSubject|null
$subject 可选 此事件所应用到的对象(默认情况下为 $this)。
返回值
Cake\Event\EventInterface<TSubject>
fetchTable() ¶ public
fetchTable(string|null $alias = null, array<string, mixed> $options = []): Cake\ORM\Table
获取表实例的便捷方法。
参数
-
string|null
$alias 可选 您要获取的别名。应采用驼峰式命名法。如果为 `null`,则使用 $defaultTable 属性的值。
-
array<string, mixed>
$options 可选 您要使用这些选项构建表。如果表已经加载,则注册表选项将被忽略。
返回值
Cake\ORM\Table
抛出
Cake\Core\Exception\CakeException
如果 `$alias` 参数和 `$defaultTable` 属性都为 `null`。
另请参阅
getAction() ¶ public
getAction(): Closure
获取要由 ControllerFactory 调用的操作的闭包。
返回值
Closure
抛出
Cake\Controller\Exception\MissingActionException
getEventManager() ¶ public
getEventManager(): Cake\Event\EventManagerInterface
返回此对象的 Cake\Event\EventManager 管理器实例。
您可以使用此实例向对象事件注册任何新的监听器或回调,或者创建自己的事件并在需要时触发它们。
返回值
Cake\Event\EventManagerInterface
getTableLocator() ¶ public
getTableLocator(): Cake\ORM\Locator\LocatorInterface
获取表定位器。
返回值
Cake\ORM\Locator\LocatorInterface
implementedEvents() ¶ public
implementedEvents(): array<string, mixed>
返回将在控制器生命周期中触发的所有事件的列表。您可以覆盖此函数以添加自己的侦听器回调
示例
public function implementedEvents()
{
return [
'Order.complete' => 'sendEmail',
'Article.afterBuy' => 'decrementInventory',
'User.onRegister' => ['callable' => 'logRegistration', 'priority' => 20, 'passParams' => true]
];
}
返回值
array<string, mixed>
invokeAction() ¶ public
invokeAction(Closure $action, array $args): void
调度控制器操作。
参数
-
Closure
$action 操作闭包。
-
array
$args 在调用操作时要传递的参数。
返回值
void
isAction() ¶ public
isAction(string $action): bool
检查操作是否可以通过 URL 访问的方法。
覆盖此方法以更改哪些控制器方法可以访问。默认实现不允许访问 Cake\Controller\Controller 上定义的所有方法,并允许访问此类所有子类上的所有公共方法。
参数
-
string
$action 要检查的操作。
返回值
bool
loadComponent() ¶ public
loadComponent(string $name, array<string, mixed> $config = []): Cake\Controller\Component
将组件添加到控制器的注册表。
加载组件后,可以通过 Controller::__get() 以属性形式访问它。例如
$this->loadComponent('Authentication.Authentication');
将导致 $this->Authentication
成为对该组件的引用。
参数
-
string
$name 要加载的组件名称。
-
array<string, mixed>
$config 可选 组件的配置。
返回值
Cake\Controller\Component
抛出
异常
log() ¶ public
log(Stringable|string $message, string|int $level = LogLevel::ERROR, array|string $context = []): bool
将消息写入 Log 的便捷方法。有关写入日志的更多信息,请参见 Log::write()。
参数
-
Stringable|string
$message 日志消息。
-
string|int
$level 可选 错误级别。
-
array|string
$context 可选 与此消息相关的其他日志数据。
返回值
bool
middleware() ¶ public
middleware(Psr\Http\Server\MiddlewareInterfaceClosure|string $middleware, array<string, mixed> $options = []): void
为控制器注册中间件。
参数
-
Psr\Http\Server\MiddlewareInterfaceClosure|string
$middleware 中间件。
-
array<string, mixed>
$options 可选 有效选项
only
: (array|string) 仅针对指定的操作运行中间件。except
: (array|string) 针对所有操作运行中间件,除了指定的那些操作。
返回值
void
paginate() ¶ public
paginate(Cake\Datasource\RepositoryInterfaceCake\Datasource\QueryInterface|string|null $object = null, array<string, mixed> $settings = []): Cake\Datasource\Paging\PaginatedInterface
处理表对象中记录的分页。
将加载引用的 Table 对象,并使用请求日期和 $this->paginate
中定义的设置让分页器对查询进行分页。
此方法还将在视图中提供 PaginatorHelper。
参数
-
Cake\Datasource\RepositoryInterfaceCake\Datasource\QueryInterface|string|null
$object 可选 要分页的表(例如:Table 实例、'TableName' 或 Query 对象)
-
array<string, mixed>
$settings 可选 用于分页的设置/配置。请参阅 {@link \Cake\Controller\Controller::$paginate}。
返回值
Cake\Datasource\Paging\PaginatedInterface
抛出
Cake\Http\Exception\NotFoundException
当请求超出界限的页面时。
链接
redirect() ¶ public
redirect(Psr\Http\Message\UriInterface|array|string $url, int $status = 302): Cake\Http\Response|null
重定向到给定的 $url,在关闭 $this->autoRender 后。
参数
-
Psr\Http\Message\UriInterface|array|string
$url 字符串、基于数组的 URL 或 UriInterface 实例。
-
int
$status optional HTTP 状态代码。默认为
302
。
返回值
Cake\Http\Response|null
链接
referer() ¶ public
referer(array|string|null $default = '/', bool $local = true): string
返回此请求的引用 URL。
参数
-
array|string|null
$default optional 如果无法从标头中读取 HTTP_REFERER,则使用的默认 URL
-
bool
$local optional 如果为 false,则不将引用 URL 限制为本地服务器。小心信任外部来源。
返回值
string
render() ¶ public
render(string|null $template = null, string|null $layout = null): Cake\Http\Response
实例化正确的视图类,将数据传递给它,并使用它来渲染视图输出。
参数
-
string|null
$template optional 用于渲染的模板
-
string|null
$layout optional 要使用的布局
返回值
Cake\Http\Response
链接
set() ¶ public
set(array|string $name, mixed $value = null): $this
保存一个变量或一个关联变量数组,以便在模板中使用。
参数
-
array|string
$name 字符串或数据数组。
-
mixed
$value optional 如果 $name 是字符串(则作为键使用),则为值。如果 $name 是关联数组,则不使用,否则作为 $name 键的值。
返回值
$this
setEventManager() ¶ public
setEventManager(Cake\Event\EventManagerInterface $eventManager): $this
返回此对象的 Cake\Event\EventManagerInterface 实例。
您可以使用此实例向对象事件注册任何新的监听器或回调,或者创建自己的事件并在需要时触发它们。
参数
-
Cake\Event\EventManagerInterface
$eventManager 要设置的事件管理器
返回值
$this
setPlugin() ¶ public
setPlugin(string|null $name): $this
设置插件名称。
参数
-
string|null
$name 插件名称。
返回值
$this
setRequest() ¶ public
setRequest(Cake\Http\ServerRequest $request): $this
设置请求对象并根据请求内容配置多个控制器属性。控制器充当某些视图变量的代理,这些变量也必须在此处更新。将设置的属性为
- $this->request - 到 $request 参数
参数
-
Cake\Http\ServerRequest
$request 请求实例。
返回值
$this
setResponse() ¶ public
setResponse(Cake\Http\Response $response): $this
设置响应实例。
参数
-
Cake\Http\Response
$response 响应实例。
返回值
$this
setTableLocator() ¶ public
setTableLocator(Cake\ORM\Locator\LocatorInterface $tableLocator): $this
设置表定位器。
参数
-
Cake\ORM\Locator\LocatorInterface
$tableLocator LocatorInterface 实例。
返回值
$this
shutdownProcess() ¶ public
shutdownProcess(): Psr\Http\Message\ResponseInterface|null
执行此控制器的各种关闭过程。以正确的顺序触发组件和控制器回调。
- 触发组件的
shutdown
回调。 - 调用控制器的
afterFilter
方法。
返回值
Psr\Http\Message\ResponseInterface|null
startupProcess() ¶ public
startupProcess(): Psr\Http\Message\ResponseInterface|null
执行此控制器的启动过程。以正确的顺序触发组件和控制器回调。
- 初始化组件,这会触发它们的
initialize
回调 - 调用控制器
beforeFilter
。 - 触发组件的
startup
方法。
返回值
Psr\Http\Message\ResponseInterface|null
viewClasses() ¶ public
viewClasses(): list<string>
获取可用于内容类型协商的备用视图类。
每个视图类都必须实现 getContentType()
钩子方法才能参与协商。
返回值
list<string>
属性详情
$_eventManager ¶ protected
此对象用于调度内部事件的 Cake\Event\EventManager 实例。
类型
Cake\Event\EventManagerInterface|null
$paginate ¶ protected
分页设置。
调用 paginate() 时,这些设置将与您提供的配置合并。可能的键
maxLimit
- 用户可以选择查看的最大限制。默认为 100limit
- 每个页面的初始项目数。默认为 20。page
- 起始页,默认为 1。allowedParameters
- 用户可以使用请求参数设置的参数列表。修改此列表将允许用户对分页有更多影响,小心您允许的内容。className
- 要使用的分页器类。默认为Cake\Datasource\Paging\NumericPaginator::class
。
类型
array<string, mixed>
$request ¶ protected
一个 \Cake\Http\ServerRequest 对象的实例,其中包含有关当前请求的信息。此对象包含有关请求的所有信息,以及用于读取有关请求的其他信息的几种方法。
类型
Cake\Http\ServerRequest