2013-10-09 4 views
1

Я пытаюсь настроить успокоительный api с помощью yii. Попытка добавить оболочку, которая принимает результаты от кода, запущенного в контроллере, и возвращает его в формате json. Я также пытаюсь поймать любые ошибки [try-catch] и вернуть их в формате json.Yii framework controller wrapper

Прямо сейчас все, что я могу придумать, это нечто похожее на код ниже ... Я бы хотел, чтобы каждый раз не добавлял try/catch.

class UserController extends Controller{ 

    public function actionIndex($user_id = null){ 
     $response = new API_Response(); 

     try{ 
      $response->success = true; 
      $response->data = array("data"=>"data goes here..."); 
     }catch(Exception $e){ 
      $response->success = false; 
      $response->message = $e->getMessage(); 
     } 

     $response->send(); 
    } 

ответ

2

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

function init(){ 
    $this->api_resp = new API_Response(); 
    Yii::app()->attachEventHandler('onException',array($this, 'handleApiError')); 
} 
public function handleApiError(CEvent $e){ 
    if($e instanceof CExceptionEvent){ 
     $this->api_resp->error = $e->exception->getMessage(); 
     $this->api_resp->send(); 
    }else{ 
     $this->api_resp->error = Yii::t('app', 'error.unknown'); 
     $this->api_resp->send(); 
    } 
} 
+0

Хороший ответ. Вернитесь через некоторое время и отметьте это сообщение как принятый ответ. –