Yii2 允許控制器內直接返回陣列

Wi1dcard發表於2019-06-20

類似 Laravel 的效果:直接 return 陣列輸出 JSON 響應。辦法有很多,目前我找到的最優解決方案如下。

/**
* Enable JSON response if app returns Array or Object
*
* @return void
*/
protected function enableJsonResponse()
{
    $this->response->on(\yii\web\Response::EVENT_BEFORE_SEND,
        function ($event) {
            /** @var \yii\web\Response $response */
            $response = $event->sender;
            if (is_array($response->data) || is_object($response->data)) {
                $response->format = \yii\web\Response::FORMAT_JSON;
            }
        }
    );
}

或者在配置內定義也可以:

'response' => [
    'on beforeSend' => function ($event) {
        // 回撥函式程式碼如上,同理
    }
    // ...
]

我感謝自己平凡,敢愛敢恨沒負擔。
我感謝自己不凡,可愛可恨都包攬。

相關文章