本教程的目的是更改ThinkPHP5.0的默认错误页面,一般情况下错误页面应该和网站风格一致,所以这里我自定义错误类,在错误类里转交给控制器输出错误页面。
注意:本教程效果在配置文件app_debug设置为false的情况下才有效。
1、编写异常监听类文件http.php,这里我放置的位置为application/index/common/http.php
namespace app\index\common; use think\exception\Handle; use think\exception\HttpException; /** * Class http * @package app\index\common */ class http extends Handle { public function render(\Exception $e) { if ($e instanceof HttpException) { $statusCode = $e->getStatusCode(); } return redirect('Error/Index'); } }
上面代码的意思为出现错误,就转到Error/Index方法,这个我没有详细判断错误代码,全部转到同一个页面,如果你需要404和500等转到不同的页面显示,只需判断$statusCode的值就行了。
2、写异常页面Error/Index
namespace app\index\controller; /** * Class Error * @package app\index\controller */ class Error extends Controller { public function Index(){ return '天啊,出错了!'; } }
上面代码我只是简单的输出的一句话,实际项目你可以任意发挥设计错误页面。
3、配置Config.php,使用我们的自定义异常类
// 异常处理handle类 留空使用 \think\exception\Handle 'exception_handle' => '\\app\\index\\common\\http',
只需配置exception_handle参数,值为我们刚刚定义的异常类的命名空间地址。
现在你就可以访问自己的项目,有错误抛出,如果显示 “天啊,出错了!”,那就证明配置成功了,接下来就自己发挥,打造自己的错误页面。