Como adicionar um Cabeçalho personalizado Dados em Joomla
Pergunta
Eu estou tentando fazer a resposta json para android do aplicativo.
Aqui está o código
$document =& JFactory::getDocument();
$document->setMimeEncoding('application/json');
$document->setCharset('utf-8');
O código acima está funcionando bem.mas quando eu adicionar o código a seguir não gera qualquer resposta.
$temp['TOKEN'] = "abc";
$document->setHeadData($temp);
Eu quero obter o mesmo resultado que pode ser obtido pela seguinte código.
header('TOKEN:abc');
Eu não posso usar o header()
método no meu código.
Solução
// For Joomla 2.5 - 4.0 (deprecated)
JResponse::setHeader('token', 'ABC');
// For Joomla 3.1+ (recommended)
$app = JFactory::getApplication();
$app->setHeader('token', 'ABC');
Apenas certifique-se você não fechar o aplicativo no componente, ou ele não terá a oportunidade de enviar estes.
Se você fizer isso, você vai ter que liberar os cabeçalhos manualmente:
// For Joomla 2.5 - 4.0 (deprecated)
JResponse::sendHeaders();
JFactory::getApplication()->close();
// For Joomla 3.1+ (recommended)
$app->sendHeaders();
$app->close();
Nota:
Se a página tiver sido solicitado, com o ?format=json
, você não tem que configurar o JDocument
como o aplicativo tem usado JDocumentJson
com mime adequado e conjunto de caracteres.
Dica:
Confira com_ajax
que auxilia na construção de respostas JSON e tratamento de exceções.