Come aggiungere dati di intestazione personalizzati in Joomla
Domanda
Sto cercando di rendere JSON Risposta per l'applicazione Android.
Ecco il codice
$document =& JFactory::getDocument();
$document->setMimeEncoding('application/json');
$document->setCharset('utf-8');
.
Il codice sopra sta funzionando bene.Ma quando aggiungo il seguente codice non genera alcuna risposta.
$temp['TOKEN'] = "abc";
$document->setHeadData($temp);
.
Voglio ottenere lo stesso risultato che può essere raggiunto dal codice followin.
header('TOKEN:abc');
.
Non posso usare il metodo header()
nel mio codice.
Soluzione
// For Joomla 2.5 - 4.0 (deprecated)
JResponse::setHeader('token', 'ABC');
// For Joomla 3.1+ (recommended)
$app = JFactory::getApplication();
$app->setHeader('token', 'ABC');
.
Assicurati di non chiudere l'applicazione nel componente, o non avrà la possibilità di inviarli.
Se lo fai, dovrai scaricare manualmente le intestazioni:
// For Joomla 2.5 - 4.0 (deprecated)
JResponse::sendHeaders();
JFactory::getApplication()->close();
// For Joomla 3.1+ (recommended)
$app->sendHeaders();
$app->close();
.
Nota:
Se la pagina è stata richiesta con ?format=json
, non è necessario configurare JDocument
come applicazione ha utilizzato JDocumentJson
con mime e charset corretti.
Suggerimento:
Check out com_ajax
che assiste inCostruire risposte JSON e gestire le eccezioni.