我只需要问一下,octobercms只能设置两种类型的错误???
404 [通过使用/ 404网址创建页面]
500 [通过创建带/错误网址的页面]
我们如何设置400,401,402,403,503,400等??????
答案 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 %}