Raccourcis : Contenu - rubriques - sous rubriques
EN FR

Une factory de DAO peut générer automatiquement des évènements pour certains types de méthodes.

Évènements des méthodes natives

Les méthodes update, insert, delete et deleteby peuvent générer des évènements, soit avant la fonction, soit après la fonction, soit avant et après. Pour les activer, il faut indiquer les évènements voulus dans l'attribut events de la balise factory. Ils doivent être séparés par une virgule. Les noms possibles sont : deletebefore, deleteafter, updatebefore, updateafter, insertbefore, insertafter, deletebybefore, deletebyafter.

Voici les noms des évènements générés avec les noms de leurs paramètres, sachant qu'ils ont tous un paramètre dao qui contient le sélecteur du dao.

  • daoDeleteBefore : keys (valeurs des clés du record à supprimer)
  • daoDeleteAfter : keys, result (1 si l'enregistrement est supprimé)
  • daoDeleteByBefore : keys, criterias (objet jDaoConditions)
  • daoDeleteByAfter : keys, criterias, result (nombre d'enregistrements supprimés)
  • daoUpdateBefore : record (objet record à mettre à jour)
  • daoUpdateAfter : record
  • daoInsertBefore : record
  • daoInsertAfter : record

Voici un exemple :

dans le fichier Dao :


  <factory events="deleteAfter, insertAfter"> ...

Dans le répertoire de la classe, créer un fichier my.listener.php afin de mettre les évenements à exécuter


class myListener extends jEventListener{
 
   function onDaoDeleteAfter ($event) {
        $dao = ;
        if ($event->getParam('dao') == 'mymodule~thedao') {
            $keys = $event->getParam('keys');
            //...
        }
   }
}

Si vous désirez modifier la propriété maPropriete de votre dao, il vous suffit


$event->getParam("record")->maPropriete = $Variable;

Évènements des méthodes personnalisées

Pour les méthodes personnalisées (celles que vous décrivez en XML), et uniquement les méthodes de type update ou delete, vous pouvez indiquer l'attribut eventbefore, et/ou eventafter qui doivent contenir true ou false.

Les évènements générés sont alors daoSpecificUpdateBefore, daoSpecificUpdateAfter, daoSpecificDeleteBefore et daoSpecificDeleteAfter. Ils ont pour paramètre

  • dao, contenant le sélecteur du dao concerné
  • method, le nom de la méthode
  • params, contenant la liste des paramètres.