OctoberCMS 401,402,403,503,400错误代码处理

时间:2018-05-12 07:15:36

标签: octobercms octobercms-plugins

我只需要问一下,octobercms只能设置两种类型的错误???

  1. 404 [通过使用/ 404网址创建页面]

  2. 500 [通过创建带/错误网址的页面]

  3. 我们如何设置400,401,402,403,503,400等??????

2 个答案:

答案 0 :(得分:5)

这两个是特殊情况,作者已在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

答案 1 :(得分:0)

如果有人在将状态代码传递到错误页面时仍有问题,只需将此添加到 boot 中的 Plugin.php 方法

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 %}