Pierre-Yves Posted January 30, 2010 Share Posted January 30, 2010 Bonjour à vous!J'ai une petite demande et je pense que pas mal de développeurs confirmeront que c'est une bonne idée... Voici les hooks qui je pensent manquent à la solution (entre autres...)---beforeUpdateObjectQui se trouverait au début de la fonction "update()" de la classe "ObjectModel". Cela nous permettrait de pouvoir agir sur l'objet avant que celui-ci ne soit modifié en BDD.afterUpdateObjectQui se trouverait à la fin de la fonction "update()" de la classe "ObjectModel". Cela nous permettrait de pouvoir agir sur l'objet après que celui-ci soit modifié en BDD.beforeAddObjectQui se trouverait au début de la fonction "add()" de la classe "ObjectModel". Cela nous permettrait de pouvoir agir sur l'objet avant que celui-ci ne soit inséré en BDD.afterAddObjectQui se trouverait à la fin de la fonction "add()" de la classe "ObjectModel". Cela nous permettrait de pouvoir agir sur l'objet après que celui-ci soit inséré en BDD.beforeDeleteObjectQui se trouverait au début de la fonction "delete()" de la classe "ObjectModel". Cela nous permettrait de pouvoir agir sur l'objet avant que celui-ci ne soit supprimé en BDD.afterDeleteObjectQui se trouverait à la fin de la fonction "delete()" de la classe "ObjectModel". Cela nous permettrait de pouvoir agir sur l'objet après que celui-ci soit supprimé en BDD.---Ce sont des toutes petites modifications au final (6 lignes à ajouter dans le code et 6 enregistrement dans la table hook), mais qui pourraient vraiment nous être utiles.Et vous les développeurs de la communauté, vous en pensez quoi?! Link to comment Share on other sites More sharing options...
ludo Posted January 31, 2010 Share Posted January 31, 2010 Je dirais que dans l'absolu c'est une très bonne idée... mais alors quand en plus elle vient de PY ça ne peut qu'être qu'une excellente idée !!!+ 1 pour moiActuellement, on a un système de hook spatial (activation de l'objet en fonction de sa localisation) et là PY nous propose d'élargir à un système de hook temporel (activation de l'objet en fonction d'un évènement) Link to comment Share on other sites More sharing options...
Julien Breux Posted January 31, 2010 Share Posted January 31, 2010 Après longues discussions autour de ce sujet avec P-Y de nombreuses fois.Je me joins à cette initiative.Il est plus que temps de faire évoluer le système de "callback" des "objects models" de la solution.J'aimerai ajouter à mon tour deux principes que j'aimerai travailler avec la team. (je le rends publique car intéressent)La possibilité de mettre un cache sur le "hook mapping" ou "callback mapping" et ainsi pouvoir utiliser dans nos template : {hook name="its_me"} grâce à une "registered function" dans "Smarty".Ainsi, on fait ce-que-l-on-veut ! Link to comment Share on other sites More sharing options...
Yoya Posted February 1, 2010 Share Posted February 1, 2010 +1 pour la proposition de PY et +1,5 pour celle de Julien. Dans tous les cas sa ne fera que renforcer l'ouverture à de nouveaux type de modules pour PS, sans le surcharger pour autant.Cdlt,Pierre. Link to comment Share on other sites More sharing options...
Damien Metzger Posted February 1, 2010 Share Posted February 1, 2010 L'idée n'est pas mauvaise en soit mais à prendre avec des pincettes.Certains objets peuvent en effet - hors import - être ajoutés ou mis à jour de très nombreuses fois :CartConnectionsConnectionsSourceGuestJe viens d'ailleurs d'enlever un update du cart qui se faisait sur chaque page.Par ailleurs, j'estime que le principe du before/after est absolument dégoutant, il me semble qu'un appel du hook juste avant l'insertion est bien suffisant.Autre remarque : le risque de boucle infini me semble assez élevé : un module qui veut add/update un objet qui lui même appelera un module... Link to comment Share on other sites More sharing options...
Pierre-Yves Posted February 1, 2010 Author Share Posted February 1, 2010 Oui effectivement tu as raison, sur certains objets cela peut devenir catastrophique Mais d'un autre coté, il suffit de garder le rapport "HOOK => MODULES" en cache au lieu d'aller le rechercher dans la base de données (même si mysql à un système de cache) les modules qui sont exécutés à chaque appel de hook.Dans ce cas, alors il n'y a plus rien de catastrophique, sauf si les modules utilisant ces hook sont mal développés Mais là c'est de la faute du dev et de l'utilisateur, plus de PrestaShop.Concernant le before/after, si tu ne fais qu'un before, comment peux-tu savoir si l'objet est bien crée? Le after permettrais de gérer les erreurs sur les insertions/update/delete d'objets . Ou alors, il faut créer un hook "onErrorObject" (bref, tu me comprends).Concernant les boucles infinies, oui... si le module est mal développé . Mais sinon ce genre de hook est plutôt un énorme plus > interaction avec les objets avant (ou après ?! ) leur insertion en base de données. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now