【问题标题】:How to re-throw exception caught from HMVC in kohana framework?如何在 kohana 框架中重新抛出从 HMVC 捕获的异常?
【发布时间】:2016-08-26 03:17:56
【问题描述】:

我了解如何重新抛出异常,在内部 MVC 请求中处理它们,但如何处理 - 作为 HTTP Response 的实例从另一台服务器捕获?好的,我猜($response->status() < 300) 的时候,但是如何将这个响应作为具有相同正文和相同代码的异常抛出?

【问题讨论】:

  • 您是否要显示远程服务器的用户响应?所以如果远程服务器抛出 500 错误你也想抛出 500 错误?
  • 我收到响应正文作为呈现的错误视图和响应代码,但我还想获得发送到该正文的消息
  • 不,不是当前服务器中的远程 HMVC
  • 我不认为在 HMVC(内部请求)中您可以在不修改呈现实际异常的控制器或异常处理程序的情况下获得实际消息。您可以在主控制器中添加条件以检查其是否为内部请求并仅呈现消息而无需任何额外的 HTML 或 css
  • 您找到解决方案了吗?

标签: error-handling kohana kohana-3 hmvc kohana-3.3


【解决方案1】:

您需要检查您的主控制器是否有初始请求。 使用它可以呈现完整响应或最小响应。比您可以使用响应正文作为错误消息。

Request::is_initial()

class Controller_APP extends Controller {
    public function after() {
        if(! $this->request->is_initial ()) {
            $this->response->body ( 'only message');
        }else{
            $this->response->body ( 'Full rendered templage');
        }
    }
}

如果请求不是初始请求,您还可以修改异常处理程序以仅呈现消息。

【讨论】:

  • 我从php.net读过一些,也许最通用和最清晰的方法是在Exception类中定义serialize/unserialize__sleep()/__wakeup()方法,传递一些自定义标头,如SerializeOnException: 1,并处理。如果标头通过并且 value == true,则使用 json 编码的序列化异常对象作为响应,而不是默认的 $error_view
猜你喜欢
  • 2011-06-27
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多