2016-07-27 83 views
0

我目前在API模塊中的每個控制器上使用以下代碼行來返回JSON響應/數據。如何設置Yii2模塊使用config/main.php返回JSON響應

public function behaviors() 
    { 
     $behaviors = parent::behaviors(); 
     $behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_JSON; 
     return $behaviors; 
    } 

它運作良好。但是我怎樣才能使用主配置文件實現相同? 我想在我的前端/配置/ main.php

'api' => [ 
     'class' => 'app\modules\api\Module', 
     'components' => [ 
      'user' => [ 
        'class' => 'yii\web\User', 
        'identityClass' => 'common\models\User', 
        'enableSession' => false, 
        'loginUrl' => null, 
        ], 

      'response' => [ 
        'class' => \yii\filters\ContentNegotiator::className(), 
        'formats' => [ 
         'application/json' => \yii\web\Response::FORMAT_JSON, 
           ], 
        ] 
     ],// Module component 

    ], 

上述配置仍返回XML響應只以下。什麼是正確的配置來設置所有控制器的API模塊中返回JSON data.Thanks

+0

嘗試通過Postman訪問api。它必須返回JSON數據 – Choxx

回答

0

添加這是你的config /主local.php

use yii\web\Response; 
$config['bootstrap'][]= 
    [ 
     'class' => '\yii\filters\ContentNegotiator', 
     'formats' => [ 

      'text/html' => Response::FORMAT_JSON, 
     ] 
    ]; 
+0

您的解決方案正在運行,但在全球範圍內。如何將其應用於特定的模塊?謝謝 –

+0

您可以將行爲附加到模塊或將您的控制器擴展到基本控制器 –

1

配置您迴應組件,如下所示:

'response' => [ 
    'format' => yii\web\Response::FORMAT_JSON, 
    // ... 
] 

formats是包含可用格式的數組。 format是實際的輸出格式。

+0

來源:http://www.yiiframework.com/doc-2.0/yii-web-response.html 請參閱公共屬性之前的說明。 –