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

OctoberCMS 401, 402, 403, 503, 400 error code handling

我只想问一下octobercms是不是只能设置两种类型的错误???

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

  2. 500 [通过使用 /error url 创建页面]

我们如何设置 400、401、402、403、503、400 等??????

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