1

我正在使用klein.php路由器,它非常强大,但是现在我想处理异常,所以从文档中我正在使用这个函数

$klein->onHttpError(function ($code, $router,$matched,$method_matched,$http_exception) {
switch ($code) {
    case 404:
         $router->response()->body(
            '404 Page'
        );
        break;
    case 405:
        $router->response()->body(
            'You can\'t do that!'
        );
        break;
    default:
        $router->response()->body(
            'Oh no, a bad error happened that caused a '. $code
        );
 }
});

但即使没有例外,这个功能也是404 page在每一页的末尾渲染和打印。难道我做错了什么?我试着检查$matched但没有运气。

我想$service->render()在错误处理中使用,我该怎么做?因为在特定onHttpError功能中无法访问服务。

4

1 回答 1

0

经过实验,我发现它是由于skipRemaining()功能而发生的。然后我又开始探索这些问题。问题#285提供了一个解决方案。

但是我仍然没有找到使用对象调用在onHttpError()函数中呈现页面的方法。$service

编辑:

要访问$service中的对象onHttpError(),我们必须再次声明它。所以代码将是

$klein->onHttpError(function ($code, $router) {
    $service = $router->service();
    $service->render('your-page-url.php');
});
于 2015-08-12T06:38:16.053 回答