Par défaut, les messages système de Joomla 3 (messages, avis, avertissements) sont affichés dans une certaine position du modèle à l'aide de
<jdoc:include type="message" />
Serait-il possible d'obtenir plus de contrôle sur ces messages et de les afficher dans différentes positions dans le conteneur de mon propre composant?
J'ai essayé d'utiliser le jdoc ci-dessus dans les vues de mon composant (tir bas), mais pas de chance. Est-il possible de "capturer" les messages générés par mon composant à l'aide du système de messagerie système standard de Joomla et de les afficher où bon me semble?
Merci d'avance.
Ok, on dirait qu’on a creusé un peu plus, j’ai trouvé une réponse à ma propre question. En gros, j'ai trouvé ce plugin:
http://extensions.joomla.org/extensions/style-a-design/popups-a-iframes/2524
Ce n'est pas exactement ce dont j'ai besoin, mais en vérifiant le code, j'ai trouvé le chemin à suivre, ce qui pourrait se résumer comme suit (au cas où quelqu'un viendrait chercher la même question):
<jdoc:include type="message" />
, Afin que les messages ne s'affichent pas deux fois.$app = JFactory::getApplication(); $messageQueue = $app->getMessageQueue();
Cela nécessite du travail, mais je pense que la voie à suivre est claire. J'espère que c'est utile pour quelqu'un d'autre dans une situation similaire.
Pour compléter cette (bonne) réponse d’Isidro, notez qu’à partir d’aujourd’hui (Joomla 3.8.12), la fonction getMessageQueue()
peut être appelée avec le paramètre "true" (getMessageQueue(true)
) purger/effacer la file de messages.
Enfin, pour obtenir les messages stockés de la manière attendue pour que la présentation les affiche, appelez cette partie de code (extraite de MessageRenderer::getData()
):
// Initialise variables.
$lists = array();
// Get the message queue
$messages = \JFactory::getApplication()->getMessageQueue();
// Build the sorted message list
if (is_array($messages) && !empty($messages))
{
foreach ($messages as $msg)
{
if (isset($msg['type']) && isset($msg['message']))
{
$lists[$msg['type']][] = $msg['message'];
}
}
}
Ensuite, vous obtenez $lists
triés de manière correcte.