Yii2 自定義返回格式
阿新 • • 發佈:2019-01-26
1.使用 controller 中的 afterAction 方法,在響應完 action 之後,對資料格式化
use Yii; class MobileController extends yii\rest\Controller { public function afterAction($action, $result) { $rs = parent::afterAction($action, $result); // 也可以再定義 response // $response = Yii::$app->response; // $response->statusCode = 200; // $response->data = ['message' => 'hello world']; return ['data' => $rs, 'error' => '0']; } }
2.自定義 Error handler
public function init()
{
parent::init();
$handler = new \app\components\ApiErrorHandler;
\Yii::$app->set('errorHandler', $handler);
$handler->register();
}
3.在 controller 中繫結 response 的 beforeSend 事件
public function init() { parent::init(); Event::on(Response::className(), Response::EVENT_BEFORE_SEND, [$this, 'formatDataBeforeSend']); } public function formatDataBeforeSend($event){ $response = $event->sender; //自已定義失敗的返回 if ($response->data !== null && $response->isSuccessful==false) { $response->data = [ 'code' => 500, 'status' => "FAIL" , 'message' => "系統繁忙,請稍後再試", ]; $response->statusCode = 200; } }