Raccourcis : Contenu - rubriques - sous rubriques
EN FR

Très souvent, il est utile d'afficher les résultats/conséquences/erreurs d'une action dans une action ultérieure. Par exemple, quand vous renvoyez un utilisateur vers la page d'accueil après un échec de connexion, il serait intéressant de lui afficher les raisons de cette redirection.

jMessage est conçu pour cela. En bref, jMessage stocke des messages en session et expose des méthodes statiques pour les ajouter, les récupérer où les effacer.

Variable de session

jMessage utilise une variable de session dont le nom par défaut est : JELIX_MESSAGE. Vous pouvez le modifier à travers le membre statique jMessage::session_name.

Exemple :


   jMessage::session_name = 'MONAPP_MESSAGE';
   

Ajouter un message

Utilisez la méthode statique jMessage::add pour ajouter un message à afficher ultérieurement. Vous passez votre message en premier argument. Notez qu'un second argument optionnel décrit le type du message.

Exemple :


   // echec d'identification
   jMessage::add( 'identification échouée : mot de passe incorrect');

   // redirection vers la page d'accueil

Afficher un message

Utilisez le plugin de template jMessage pour afficher le(s) message(s) en attente.

Exemple :


    // tpl de la page d'accueil

    // affiche les messages en attente dans un tag <ul>     
    {jmessage} 

le template ci-dessus donnera le fragment de html suivant :

Une autre option est d'utiliser la méthode statique jMessage::get pour récupérer les messages dans un contrôleur.

Exemple :


   // dans votre action affichant la page d'accueil
   $messages = jMessage::get(); // récupère tous les messages du type par défaut

   // transmission au template
   $tpl->assign('messages', $messages);

Note : si vos messages ont été ajoutés avec un type particulier, vous devez appeler jMessage::get('montype') pour les récupérer.

Vous pouvez aussi récupérer tous les messages quel que soit leur type avec jMessage::getAll().

Effacer les messages

Pour effacer les messages et ainsi éviter de trop grossir les données de sessions, appelez jMessage::clearAll().

Vous pouvez aussi effacer un seul type de message avec jMessage::clear(). cette méthode accepte un argument optionnel décrivant un type. Si le type est vide, la méthode effacera les messages du type default.