web-dev-qa-db-ja.com

Yii2でJSON形式の応答を取得する

応答の配列をJSON形式に変換しようとしています。 SOおよび他のWebサイト web1web2header('Content-Type: application/json')の追加)に投稿されたすべての回答を試しました。 echo json_encode($data,JSON_PRETTY_PRINT);しかし、私は常にテキスト形式で出力を取得しています。

ヘルパークラス:

public static function renderJSON($data) {
    header('Content-Type: application/json');
    echo json_encode($data,JSON_PRETTY_PRINT);
}

私のコントローラー:

if ($model->login()) {
    $user =  User::findByUsernameOrEmail($request->post('username'));
    $userArray = ArrayHelper::toArray($user);
    Helpers::renderJSON($userArray);

userArrayを印刷しようとしましたが、次のようになります。

Array
(
    [name] => abc
    [lastname] => xyz
    [username] => test_test
)

JSON出力:(html/text)

{
    "name": "abc",
    "lastname": "xyz",
    "username": "test_test"
}
13
ASN

セット

\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;

returnの前のコントローラーのアクションで。

35
Bizley

Yii 2.0.11からJSON形式で応答を返す専用の asJson() メソッドがあります。実行:

return $this->asJson($array);

コントローラーのアクションで。

14

これをコントローラーに追加するだけです

public function beforeAction($action)
{

    \Yii::$app->response->format = Response::FORMAT_JSON;
    return parent::beforeAction($action);
}
4
Yasar Arafath