无脂肪框架(F3):自定义404页面(以及其他错误)


Fat Free Framework (F3): custom 404 page (and others errors)

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

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

GET /@codes /WebController->error

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

http://mydomain.ext/itdoesntexists

但是如果我记得一个

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

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

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

谢谢

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

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

下面是一个快速示例:

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

有错误.html定义为:

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

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

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