7

如何处理我的 404 自定义页面(可能还有其他错误)?

我刚刚尝试在路由部分添加

GET /@codes /WebController->error

我的 Class WebController 处理错误的地方,对于 404 我解决了(部分)。实际上它适用于

http://mydomain.ext/itdoesntexists

但如果我记得一个

http://mydomain.ext/sub/maybe_another_sub/and_so_on/doesnt_exist

我的路线(当然)不起作用。

顺便说一句,在每种情况下,这条路线都不会推送 404 标头(只是对事物的疯狂看法,我正在考虑向 Google 寻找资源,但它没有收到“纯”404)。

谢谢

4

1 回答 1

25

您不必为此定义路线。F3 将自动为任何未定义的路线生成 404 状态代码。

如果要定义自定义错误页面,则需要设置 ONERROR 变量。

这是一个简单的例子:

$f3->route('GET /','App->home');
$f3->set('ONERROR',function($f3){
  echo \Template::instance()->render('error.html');
});
$f3->run();

error.html 定义为:

<!DOCTYPE html>
<head>
<title>{{@ERROR.text}}</title>
</head>
<body>
  <h1>{{@ERROR.text}}</h1>
  <p>Error code: {{@ERROR.code}}</p>
</body>
</html>

现在,如果您调用任何未定义的路由,例如 /foo,模板 error.html 将呈现 404 状态代码。

注意:这适用于其他错误代码。其他错误代码由 F3 或您的应用程序使用命令触发$f3->error($status), $status 是任何有效的 HTTP 状态代码(404、500、403 等...)

于 2013-11-04T08:24:17.793 回答