> Copix_Team > Hello_You__ > ActionGroup > Download > CopixRequest > CopixServices > old_news_2007 > CopixListener
fr

Présentation

Pour pouvoir intercepter un évènement, il est nécessaire de passer par deux étapes :

Création du listener

Emplacement

Les listeners sont des classes qui seront stockées dans les répertoires /classes/ de vos modules. Les fichiers se nomment "nom.listener.php". La classe listener se nomme ListenerNom et hérite de CopixListener. Le listener comporte des méthodes nommées processNomEvenementATraiter, un peu comme les méthodes actions dans les Actiongroup.

exemple


//fichier classes/exemple.listener.php
class ListenerExemple extends CopixListener {
   function processEvenement ($pEvent, $pEventResponse){
      //traitement de l'évènement
   }
}
 

Paramètres des méthodes processXXX

$pEvent l'évènement donné en paramètre

$pEvent correspond à l'évènement (de type CopixEvent) qui a été lancé.

exemple


function processEvenement ($pEvent, $pEventResponse){
   if ($idNews = $pEvent->getParam ('id_nouvelle')){
      //traitement de la nouvelle d'id $idNews
   }
}
 

$pEventResponse pour apporter une réponse

Le paramètre $pEventResponse est de type CopixEventResponse et vous permet d'indiquer à l'appelant que vous avez effectué des traitements.


function processEvenement ($pEvent, $pEventResponse){
   //des traitements sont effectués
   //la réponse doit être donnée sous la forme d'un tableau clef / valeur
   $pEventResponse->add (array ('elementDeResponse'=>'valeur', 'elementDeReponse2'=>'valeur2'));
}
 

Enregistrement dans le fichier module.xml

Lorsque vous avez développé votre listener et que vous l'avez préparé pour répondre correctement aux évènements désirés, il vous suffit de l'enregistrer dans le fichier module.xml du module qui écoute les évènements en question (peu importe celui qui les lance) dans la section events / listeners.

Vous écrirez une balise listener pour chaque listener que vous déclarez. Vous indiquez une balise "event" pour chaque évènement auquel répond votre listener.


 <events>
  <listeners>
    <listener name="NomListener">
     <event name="NomEvenement" />
     <event name="AutreEvenement" />
    </listener>
  </listeners>
 </events>
 

Note : Pour que votre listener soit actif, il faut que le module auquel il appartient soit installé.