Comment ajouter des données d'en-tête personnalisées dans Joomla
Question
J'essaie de faire une réponse json pour l'application Android.
Voici le code
$document =& JFactory::getDocument();
$document->setMimeEncoding('application/json');
$document->setCharset('utf-8');
Le code ci-dessus fonctionne bien.mais lorsque j'ajoute le code suivant, il ne génère aucune réponse.
$temp['TOKEN'] = "abc";
$document->setHeadData($temp);
Je veux obtenir le même résultat qui peut être obtenu en suivant le code.
header('TOKEN:abc');
Je ne peux pas utiliser le header()
méthode dans mon code.
La solution
// For Joomla 2.5 - 4.0 (deprecated)
JResponse::setHeader('token', 'ABC');
// For Joomla 3.1+ (recommended)
$app = JFactory::getApplication();
$app->setHeader('token', 'ABC');
Assurez-vous simplement de ne pas fermer l'application dans le composant, sinon elle n'aura pas la possibilité de les envoyer.
Si vous le faites, vous devrez vider les en-têtes manuellement :
// For Joomla 2.5 - 4.0 (deprecated)
JResponse::sendHeaders();
JFactory::getApplication()->close();
// For Joomla 3.1+ (recommended)
$app->sendHeaders();
$app->close();
Note:
Si la page a été demandée avec le ?format=json
, vous n'avez pas besoin de configurer le JDocument
comme l'application l'a utilisé JDocumentJson
avec un mime et un jeu de caractères appropriés.
Conseil:
Vérifier com_ajax
qui aide à créer des réponses JSON et à gérer les exceptions.