public function beforeAction($action) { if ($this->isActionAttachedByActionsMethod($action) || $this->isSpecialAction($action)) { return parent::beforeAction($action); } try { $requestModel = $this->createApiValidation($this->getId(), $action->id); $postParamsKey = self::$configuration['requestKey']; if (empty($this->request)) { $this->request = isset($_POST[$postParamsKey]) ? $_POST[$postParamsKey] : file_get_contents('php://input'); } Request::setModel($requestModel); Request::setRawRequest($this->request); if (Request::validate()) { return parent::beforeAction($action); } else { Response::error(ErrorCodes::VALIDATION_ERROR, Request::model()->getErrors()); $this->afterAction($action); } } catch (Exception $e) { if ($e instanceof CHttpException) { throw $e; } $trace = YII_DEBUG ? ' Trace: ' . $e->getTraceAsString() : ''; Response::error(ErrorCodes::SERVER_ERROR, $e->getMessage() . $trace); $this->renderAndLogResponse(); } }