Нет ничего плохого в использовании $ this -> _ forward () внутри init () (если метод, который вы хотите переадресовать, находится внутри того же контроллера, что и init ()), это просто изменит контроллер объекта запроса / действие (переписать то, что было установлено через маршрутизатор).
Альтернативой этому может быть создание Zend_Controller_Plugin, так как похоже, что вы обрабатываете непредвиденные ошибки.
Посмотрите на реализацию Zend_Controller_Plugin_ErrorHandler.
Поэтому вместо переадресации на другое действие вы бы сгенерировали исключение, и ваш собственный плагин проверял в postDispatch (), если ответ содержит исключения eny, и если он просто редактирует текущий объект запроса, чтобы показать ваше действие «отмена».
$request->setDispatched(false)
->setControllerName("error")
->setActionName("jsonDecoding");
Последний способ может состоять в том, чтобы просто выбросить выход после эха "{error:" invalid json "}" не очень хорошо, но вы избежите перегрузки, вызванной другой итерацией диспетчеризации.