2017-01-16 13 views
4

で応答を取得します。私はheader('Content-Type: application/json')を追加SOとweb1のような他のウェブサイトに掲載されたすべての答え、web2を試してみましたが、その後、echo json_encode($data,JSON_PRETTY_PRINT); しかし、私は常にテキスト形式で出力を取得していています。 これを解決するのに役立つ人がいますか?私はJSON形式に変換し、レスポンスの配列をしようとしているJSON format- yii2とPHP

ヘルパークラス:

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 /テキスト)

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

答えて

12

return前にどこかのコントローラのアクションで設定

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

+0

おかげBizleyでこれを追加します。それは働いている。代わりに、 'helper class'の' echo'文の前に 'helper class'で追加することができます。別の場所でその関数を呼び出すことになります。 – ASN

+0

まず最初に、データを '返す 'べきであり、' echo'してはいけません。現在の応答に影響を与える限り、どこでもかまいません。 – Bizley

+0

ok Bizley。私の代わりに、エコーの返すように変更されます(しかし、それは私に空の結果を与えている返すように変更。私は郵便配達上のコードをチェックすることだし、出力には何もありません)。あなたがいずれかを使用する必要はありません ';そして私は' \のYii :: $ APP->対応 - >フォーマット= \のYiiの\ウ​​ェブ\レスポンス:: FORMAT_JSONを追加することにより、コントローラ – ASN

2

単にコントローラ

public function beforeAction($action) 
{ 

    \Yii::$app->response->format = Response::FORMAT_JSON; 
    return parent::beforeAction($action); 
} 
関連する問題