Как добавить пользовательские данные заголовка в Joomla
Вопрос
Я пытаюсь сделать ответ JSON для приложения Android.
Вот код
$document =& JFactory::getDocument();
$document->setMimeEncoding('application/json');
$document->setCharset('utf-8');
Приведенный выше код работает нормально.но когда я добавляю следующий код, он не генерирует никакого ответа.
$temp['TOKEN'] = "abc";
$document->setHeadData($temp);
Я хочу получить тот же результат, которого можно достичь с помощью следующего кода.
header('TOKEN:abc');
Я не могу использовать header()
метод в моем коде.
Решение
// For Joomla 2.5 - 4.0 (deprecated)
JResponse::setHeader('token', 'ABC');
// For Joomla 3.1+ (recommended)
$app = JFactory::getApplication();
$app->setHeader('token', 'ABC');
Просто убедитесь, что вы не закрываете приложение в компоненте, иначе у него не будет возможности отправить их.
Если вы это сделаете, вам придется очистить заголовки вручную:
// For Joomla 2.5 - 4.0 (deprecated)
JResponse::sendHeaders();
JFactory::getApplication()->close();
// For Joomla 3.1+ (recommended)
$app->sendHeaders();
$app->close();
Примечание:
Если страница была запрошена с помощью ?format=json
, вам не нужно настраивать JDocument
в качестве приложения использовали JDocumentJson
с правильными пантомимами и кодировкой.
Кончик:
Проверить com_ajax
который помогает создавать ответы JSON и обрабатывать исключения.