Я пытаюсь преобразовать и массировать ответ в формате JSON. Я пробовал все ответы, которые были размещены на SO и других сайтах, таких как web1, web2, добавив header('Content-Type: application/json')
, а затем echo json_encode($data,JSON_PRETTY_PRINT);
Но я всегда получаю вывод в текстовом формате. Может ли кто-нибудь помочь мне в решении этого вопроса.Получите ответ в формате JSON- 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"
}
Благодаря Bizley. Работает. Могу ли я добавить его в «вспомогательный класс» перед выражением 'echo', так как я буду называть эту функцию в разных местах. – ASN
Прежде всего, вы должны «возвращать» данные, а не 'echo'. Он может быть где угодно, пока он влияет на текущий ответ. – Bizley
ok Bizley. Я изменю его, чтобы возвращать вместо echo (но изменение его для возврата дает мне пустой результат. Я проверяю код на почтальоне, и в выходе ничего нет). И я добавил заявление в 'behaviors()' метод в контроллере – ASN