Платформа зенда: Как обработать исключения в запросах Ajax?

Обычно, когда исключение выдается, Ошибочный контроллер принимает управление и отображает ошибочную страницу с обычным общим заголовком и нижним колонтитулом.

Это поведение не требуется в запросе Ajax. Поскольку в случае ошибки, целая страница HTML отправляется. И в случаях, где я непосредственно загружаю контент http ответа в отделении, это еще более нежелательно.

Вместо этого в случае запроса Ajax, я просто хочу получить 'фактическую ошибку', брошенную исключением.

Как я могу сделать это?

Я думаю, один грязный путь мог быть: установите var в запросе ajax и процессе соответственно. Не хорошее решение.

5
задан understack 1 June 2010 в 06:46
поделиться

1 ответ

если вы используете помощники действий contextSwitch или ajaxContext для кодирования ошибки (возможно, отключив autoJsonSerialization ), вы можете просто передать ошибки обратно как JSON. / Объекты XML.

http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.contextswitch

class Error_Controller extends Zend_Controller{
    public function errorAction(){
        $contextSwitch = $this->_helper->getHelper('contextSwitch');
        $contextSwitch->addActionContext($this->getRequest()->getActionName(),'json')
            ->initContext();
        $errors = $this->_getParam('error_handler');
        $this->view->exception = $errors->exception;
    }
}

Оттуда вы должны либо передать параметр format = json, который каждый AJAX запросить или настроить цепочку маршрутизации, которая автоматически добавляет ее.

Для «немного» более безопасной настройки вы можете использовать ajaxContext в качестве помощника, и только запросы с заголовком XMLHttpRequest будут обслуживаться json.

3
ответ дан 14 December 2019 в 13:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: