J'essaie de convertir et de tableau de réponse au format JSON. J'ai essayé toutes les réponses publiées sur SO et d'autres sites Web comme web1 , web2 en ajoutant header('Content-Type: application/json')
et alors echo json_encode($data,JSON_PRETTY_PRINT);
Mais je reçois toujours la sortie au format texte. Quelqu'un peut-il m'aider à résoudre ce problème.
Classe des aides:
public static function renderJSON($data) {
header('Content-Type: application/json');
echo json_encode($data,JSON_PRETTY_PRINT);
}
Mon contrôleur:
if ($model->login()) {
$user = User::findByUsernameOrEmail($request->post('username'));
$userArray = ArrayHelper::toArray($user);
Helpers::renderJSON($userArray);
J'ai essayé d'imprimer le userArray
et ça ressemble à ceci:
Array
(
[name] => abc
[lastname] => xyz
[username] => test_test
)
Sortie Json: (html/texte)
{
"name": "abc",
"lastname": "xyz",
"username": "test_test"
}
Ensemble
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
dans l'action du contrôleur quelque part avant return
.
Depuis Yii 2.0.11, il existe une méthode asJson()
dédiée pour renvoyer une réponse au format JSON. Exécuter:
return $this->asJson($array);
dans l'action de votre contrôleur.
Ajoutez simplement ceci dans le contrôleur
public function beforeAction($action)
{
\Yii::$app->response->format = Response::FORMAT_JSON;
return parent::beforeAction($action);
}