【发布时间】:2018-10-22 13:09:53
【问题描述】:
我只想问一下octobercms是否只能设置两种类型的错误???
404 [通过使用 /404 url 创建页面]
500 [通过使用 /error url 创建页面]
我们如何设置 400、401、402、403、503、400 等??????
【问题讨论】:
标签: octobercms octobercms-plugins
我只想问一下octobercms是否只能设置两种类型的错误???
404 [通过使用 /404 url 创建页面]
500 [通过使用 /error url 创建页面]
我们如何设置 400、401、402、403、503、400 等??????
【问题讨论】:
标签: octobercms octobercms-plugins
这两种情况是作者已经在Cms Main Controller 中编写代码但对于其他人我们需要自己编写代码的特殊情况:)
嗯,都与HttpException有关,所以这是我们实际设置和抛出的代码,
App::abort(403, 'Access is forbidden to the requested page.' /* message */);
现在这些都是HttpException,我们可以使用App::error拦截它们。您需要将此代码添加到您的 plugin boot 方法中。
//\App::error(function(\Exception $exception) { // for handling all Exceptions
// for handling http related exceptions
\App::error(function(
\Symfony\Component\HttpKernel\Exception\HttpException $exception) {
dd($exception->getStatusCode()); /* 403 */ // 400, 401, 402, 403, 503, 400 etc
// Handle the exception...
});
您可以在此处查看status-code 并根据需要处理它们。
参考:https://octobercms.com/docs/services/error-log#http-exceptions
【讨论】:
如果有人仍然对将状态代码传递到错误页面有疑问,只需将其添加到 Plugin.php 中的 boot 方法中
App::error(function(\Symfony\Component\HttpKernel\Exception\HttpException $exception) {
$controller = new \Cms\Classes\Controller(\Cms\Classes\Theme::getActiveTheme());
$controller->setStatusCode($exception->getStatusCode());
return $controller->run('/error');
});
并使用检查/error 上的状态码
{% if this.controller.getStatusCode() == 403 %}
【讨论】: