Paolo75 Posted January 30, 2019 Share Posted January 30, 2019 (edited) Bonjour à tous, j'ai beau chercher une solution à mon problème, je ne comprends pas d'où il vient 🙄 A chaque fois que je modifie mes transporteurs (en l'occurence, mon seul transporteur), l'entrée dans la base de données (ps_carriers) est dupliquée plutôt que d'être updaté (voir PJ) Certes les "anciennes lignes" passent en deleted = 1, mais je me retrouve avec des problème d'ID dans le module que je développe actuellement. A quoi est dû ce comportement ? J'ai trouvé la fonction postProcess() dans la classe AdminCarriersControllerCore - et non AdminCarrierWizardControllerCore qui n'en a pas. Je ne vois rien qui sorte de l'ordinaire... Merci d'avance pour votre aide ! Edited January 30, 2019 by Paolo75 Titre de topic plus explicite (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted January 30, 2019 Share Posted January 30, 2019 c'est normal et très utile pour conserver la cohérence des commandes/factures Ne vous basez pas sur l'id mais sur la référence transporteur 1 Link to comment Share on other sites More sharing options...
Paolo75 Posted January 30, 2019 Author Share Posted January 30, 2019 (edited) 13 minutes ago, Eolia said: c'est normal et très utile pour conserver la cohérence des commandes/factures Ne vous basez pas sur l'id mais sur la référence transporteur Bonjour Eolia, D'accord, je comprends mieux maintenant, c'est vrai que c'est assez malin comme process. Merci pour cette réponse rapide et pour ton aide. Edited January 30, 2019 by Paolo75 (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted January 30, 2019 Share Posted January 30, 2019 De plus il existe depuis toujours un hook permettant de savoir qu'une transporteur change d'id (hookUpdateCarrier) Link to comment Share on other sites More sharing options...
Paolo75 Posted January 31, 2019 Author Share Posted January 31, 2019 (edited) 14 hours ago, doekia said: De plus il existe depuis toujours un hook permettant de savoir qu'une transporteur change d'id (hookUpdateCarrier) Salut Doekia, Pour rebondir sur cette histoire de Hook : en effet je le vois bien dans la classe AdminCarriersController.php : Hook::exec('actionCarrierUpdate', array( 'id_carrier' => (int)$current_carrier->id, 'carrier' => $new_carrier )); Question : est-il possible, depuis mon module personnel, d'écouter ce hook et d'éxécuter du code quand actionCarrierUpdate est appelé ? Comme un event listener de Symfony en gros. Je ne trouve pas d'informations à ce sujet mais j'ai peut-être mal cherché - même dans la doc. officielle. Tout simplement en déclarant une nouvelle fonction hookActionCarrierUpdate() ? Avec une variable en paramètre pour récupérer les données ? Très concrètement, quand un transporteur est modifié, j'aimerais récupérer l'ID de la nouvelle entrée ($news_carrier->id) pour l'injecter dans une requête. Merci d'avance pour ton aide Edited January 31, 2019 by Paolo75 (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted February 1, 2019 Share Posted February 1, 2019 Tu as compris le principe Dans ton install() $this->registerHook('updateCarrier') et dans ton code public function hookUpdateCarrier($params) { $carrier = $params['carrier']; $id_carrier_old = (int)($params['id_carrier']); $id_carrier_new = (int)$carrier->id; if ($id_carrier_old == (int)Db::getInstance()->getValue(' SELECT id_carrier FROM '._DB_PREFIX_.'ma_table WHERE id_carrier = '.$id_carrier_old)) Db::getInstance()->Execute(' UPDATE '._DB_PREFIX_.'ma_table SET id_carrier = '.$id_carrier_new.' WHERE id_carrier = '.$id_carrier_old); } Le hook se déclenchera à chaque mise à jour d'un transporteur^^ 1 Link to comment Share on other sites More sharing options...
doekia Posted February 1, 2019 Share Posted February 1, 2019 Exactement comme dit @Eolia 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