Jump to content

Guzzle, Composer et custom module


Recommended Posts

Bonjour à tous !

ChatGPT ne m'a pas aidé ... ;)

Pas sur que commencer comme ça soit la meilleure méthode, c'était une blague

Mon problème :

Je développe un module qui va appeler une API lors du hook updateOrderStatus

J'ai donc besoin de guzzle. Mais je n'arrive pas à comprendre si je dois installer guzzle dans les dépendances du module (et on aurait du duplicate namespace, potentiellement, car il est déjà utilisé par d'autres modules) et si oui, comment execute-t-on composer à l'install d'un module ? 

En effet, à la fin je vais le zipper pour l'installer sur la prod. Comment va t'il faire le composer install ?

J'ai regardé les modules du core, dans le fichier d'install, aucun vendor n'est initialement présent, il semblerait que ce soit à l'install que les dépendances se chargent, pour chaque module.

Pourriez vous m'éclairer sur le process ?

Merci par avance !

 

EDIT : Presta 1.7

Edited by bayzazi (see edit history)
Link to comment
Share on other sites

Salut,

C'est rarement une bonne idée de faire un appel à une API sur un hook comme actionOrderStatusUpdate car il faut prendre en compte que ce hook peut être appelé plusieurs fois dans la même requête HTTP.

Par exemple, sur le listing des commandes dans le BO, il est possible de mettre à jour le status de plusieurs commandes en même temps, en fonction du volume cela peut causer de gros ralentissement voir un timeout.

Prenons l'exemple d'un marchand qui procède ainsi au changement du status de commande de 50 commandes en même temps depuis cette page, le hook sera appelé au minimum 50 fois, générant ainsi 50 appels API...

Attention également, certains API ont un Rate Limit qui peuvent bloquer si trop d'appels sont effectués dans un court laps de temps.

Enfin concernant composer, on trouve toutes les réponses à tes questions dans la documentation à priori : https://devdocs.prestashop-project.org/1.7/modules/concepts/composer/

Link to comment
Share on other sites

Bonjour,

merci de ton retour.

Certes, pour le hook, je vais y réflechir .. Verrais tu une alternative ? Une action doit se déclencher lorsque la commande passe au statut "paiement accepté".

Concernant composer, j'ai bien vu la chose, et comprend bien l'idée.

Mais qui de l'install du module du coup ?

A chaque install il faut lancer un composer install dans le rep du module ?

ça me semble lourd !

Link to comment
Share on other sites

  • 3 weeks later...
On 2/3/2023 at 11:14 AM, bayzazi said:

A chaque install il faut lancer un composer install dans le rep du module ?

Salut,

Pas du tout, ton zip doit déjà contenir tes dépendances https://devdocs.prestashop-project.org/1.7/modules/concepts/composer/#important-notes

Le zip de ton module est appelé "release package" dans la devdocs, tu dois faire le composer install avant de faire ton ZIP, il n'y aura donc pas besoin de faire de composer install lors de l'installation du module car le ZIP contient déjà toutes les dépendances.

A noter que si ton module utilise des dépendances déjà présentes nativement sur PrestaShop, tu n'as pas besoin de les inclure dans ton ZIP. Par exemple, Guzzle est déjà livré avec PrestaShop 1.7 et 8.0 mais si ton module vise PrestaShop 1.6 tu dois l'inclure car cette version ne l'inclus pas nativement.

Edited by Janett (see edit history)
  • Thanks 1
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...