【问题标题】:onHttpError in klein.php executes every timeklein.php 中的 onHttpError 每次都会执行
【发布时间】:2015-08-07 07:08:16
【问题描述】:

我正在使用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函数。

【问题讨论】:

    标签: php exception-handling router klein-mvc


    【解决方案1】:

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

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

    编辑:

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

    $klein->onHttpError(function ($code, $router) {
        $service = $router->service();
        $service->render('your-page-url.php');
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-19
      • 2019-03-23
      • 2014-08-11
      • 2020-06-12
      相关资源
      最近更新 更多