Comment rendre le message système à partir d'un appel AJAX

10

Je souhaite afficher un message système lorsque je récupère ma demande ajax.

La demande ajax renvoie le bon message. Je peux le tester avec une alerte.

alert(result.message);
Joomla.renderMessages(result.message);

Il affichera maintenant le message de réussite ou d'erreur comme un message système Joomla typique. Mais l' Joomla.renderMessagesappel, n'affiche aucun résultat. Le message système n'apparaîtra pas sur mon site.

Y a-t-il un problème ou dois-je faire quelque chose de plus pour que cela fonctionne?

Perino
la source

Réponses:

6

Toutes les choses mentionnées par @Bakual sont correctes, mais je remarque que vous passez simplement le result.messageà alertet étant donné qu'il [alert(message)][1]s'attend messageà être un stringou un objectil peut se convertir en un, stringcela pourrait être le problème.

S'il ne result.messages'agit que d'une chaîne, vous devrez l'envelopper dans un conteneur approprié, quelque chose comme ceci:

var jmsgs = [result.message];  // You can stack multiple messages of the same type
Joomla.renderMessages({'info': jmsgs });
Craig
la source
c'est la solution! THX!
Perino
2

La fonction JavaScript dépend de la présence d'un conteneur avec l'id system-message-container. Certains modèles n'ont pas ce conteneur du tout, ou seulement s'il y a un message à afficher. Donc, vérifiez d'abord avec Protostar et voyez si cela fonctionne là-bas

Vous devez également vous assurer que vous avez bien chargé core.jsvotre extension. Il n'est pas nécessairement chargé, surtout pas en frontend. Depuis Joomla 3.3, vous pouvez le charger en utilisant JHtmlBehavior::core(), dans la version précédente, vous utiliseriez JHtmlBehavior::framework().

Bakual
la source