$data,'errcode'=>$errno,'msg'=>$msg]; } public $encrypt = true;//是不加密 /** * Formats response data in JSON format. * @param \yii\web\Response $response */ protected function formatJson($response) { //$response->getHeaders()->set('Content-Type', 'text/plain; charset=UTF-8'); //$response->getHeaders()->set("Access-Control-Allow-Origin","*"); if ($response->data !== null) { $options = $this->encodeOptions; if ($this->prettyPrint) { $options |= JSON_PRETTY_PRINT; } $errcode = 0; $msg = ''; $data=[]; if(!$response->isSuccessful){ $response->statusCode = 200; $errcode=-1; if(Yii::$app->errorHandler->exception){ // if(Yii::$app->errorHandler->exception instanceof ) if(isset(Yii::$app->errorHandler->exception->statusCode)){ $errcode = Yii::$app->errorHandler->exception->statusCode; }elseif (Yii::$app->errorHandler->exception->getCode()>0){ $errcode=Yii::$app->errorHandler->exception->getCode(); }else{ $errcode = $this->defaultErrorCode; } $msg= YII_DEBUG?Yii::$app->errorHandler->exception->getMessage():'服务器内部错误'; } }else{ $data = $response->data; } $response->data = self::formatData($data,$errcode,$msg); // var_dump($response->data);exit; // if(!$response->isSuccessful){ // $response->statusCode = 200; // if($response->data['code']>20000) // $code = $response->data['code']; // else // $code = ErrorCode::APP_EXCEPTION; // $redirect = ''; // $response->data = BController::ApiResponse([],$response->data['message'],$code,$redirect); // } // if(isset(Yii::$app->params['response_encrpyt']) && Yii::$app->params['response_encrpyt']){ // $encryption = new MCrypt(); // $response->content = $encryption->encrypt(Json::encode($response->data, $options)); // }else{ $response->content = Json::encode($response->data, $options); // } } } /** * Formats response data in JSONP format. * @param \yii\web\Response $response */ protected function formatJsonp($response) { $response->getHeaders()->set('Content-Type', 'application/javascript; charset=UTF-8'); if ($response->data !== null) { $options = $this->encodeOptions; if ($this->prettyPrint) { $options |= JSON_PRETTY_PRINT; } if(!$response->isSuccessful){ $response->statusCode = 200; if($response->data['code']>20000) $code = $response->data['code']; else $code = $this->defaultErrorCode; $redirect = ''; // $response->data = BController::ApiResponse([],$response->data['message'],$code,$redirect); } // if(isset(Yii::$app->params['response_encrpyt']) && Yii::$app->params['response_encrpyt']){ // $encryption = new MCrypt(); // $response->content = $encryption->encrypt(Json::encode($response->data, $options)); // }else{ // $response->content = Json::encode($response->data, $options); // } } $response->data= ['data'=>$response->data,'callback' => Yii::$app->getRequest()->get('callback')]; if (is_array($response->data) && isset($response->data['data'], $response->data['callback'])) { $response->content = sprintf('%s(%s);', $response->data['callback'], Json::htmlEncode($response->data['data'])); } elseif ($response->data !== null) { $response->content = ''; Yii::warning("The 'jsonp' response requires that the data be an array consisting of both 'data' and 'callback' elements.", __METHOD__); } } }