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

时间:2013-11-04 07:35:46

标签: php fat-free-framework

我如何处理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标题(只是对事物的疯狂视觉,我正在考虑谷歌寻找资源而它没有收到“纯粹的”404)。

谢谢

1 个答案:

答案 0 :(得分:24)

您无需为此定义路线。 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等等)