2016-05-01 2 views
0

Я понимаю, как перебрасывать исключение, обрабатывая их по внутренним MVC запросов, но как обращаться с этим - который был пойман как экземпляр HTTP Response с другого сервера? Хорошо, я думаю, когда ($response->status() < 300), Но как выбросить этот ответ как исключение с тем же телом и тем же кодом?Как перебросить исключение, пойманное из HMVC в рамках кодеана?

+0

Вы пытаетесь показать ответ своего пользователя на удаленном сервере? так что если удаленный сервер выбросит ошибку 500, вы также хотите выбросить 500 ошибок? – Faraz

+0

Я получаю тело ответа как визуализированное представление ошибки и код ответа, Bu Я хочу также получить сообщение о том, что было отправлено этому телу – LINKeRxUA

+0

нет, а не удаленный, HMVC внутри текущего сервера – LINKeRxUA

ответ

0

Вам необходимо проверить свой главный контроллер, если его первоначальный запрос или нет. Используя это, вы оказываете полный ответ или минимальный отклик. Чем вы можете использовать тело ответа как сообщение об ошибке.

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'); 
     } 
    } 
} 

Вы также можете изменить свой обработчик исключений для отображения только сообщение, если запрос не первоначальный запрос.

+0

Я читал некоторые из php.net, возможно, наиболее универсальным и понятным способом является определение методов 'serialize' /' unserialize' и '__sleep()'/'__wakeup()' в классе Exception, передать некоторый настраиваемый заголовок, например 'SerializeOnException: 1' и обрабатывать его. если заголовок передан и значение == true, используйте json-кодированный сериализованный объект исключения как ответ вместо стандартного '$ error_view' – LINKeRxUA

Смежные вопросы