Jump to content
Jibax

[SOLVED] Comment mettre a jour un contenu retourné par un displayHook ?

Recommended Posts

Bonjour à tous, ma problématique est la suivante : comment mettre à jour une valeur retournée par un hook de type display sans rafraichir la page

Par exemple, lorsque qu'un client modifie les quantités d'un produit dans le panier, le hook actionCartSave est correctement appelé. Lorsque les quantités sont modifiées, je souhaite mettre à jour une valeur retournée par displayProductPriceBlock. J'execute donc la fonction 

Hook::exec("displayProductPriceBlock", array())

 à la fin de la fonction hookActionCartSave() de mon module pour rafraîchir le contenu renvoyée par la méthode hookDisplayProductPriceBlock() de mon module. Mais rien de nouveau ne s'affiche  (alors que j'effectue correctement les changements dans ma fonction et que hookActionCartSave() est correctement appelée). 

Est ce normal ? Doit on utiliser du JS pour cela ou le fonctionnement des hook permet de rafraîchir le contenu sans mettre a jour la page ? 

Prestashop 1.7.3

Edited by Jibax
solved topic (see edit history)

Share this post


Link to post
Share on other sites

JS obligatoire le serveur ne peut pas modifier un élément html, il ne peut que générer une page en entier.

Share this post


Link to post
Share on other sites

Merci @Eolia de cette réponse rapide, 

Avez vous de la documentation ou un exemple sur comment appeler une fonction JS depuis une fonction php (le hook) ? 

Cordialement

Share this post


Link to post
Share on other sites

c'est l'inverse^^ JS appelle php, jamais dans l'autre sens, le js étant dans le navigateur et non sur le serveur.

La fonction actionCartSave est appellée depuis le JS, il faut se mettre à la fin de cet appel js et récupérer la valeur que le serveur a renvoyé.

Ouvrez votre console (F12) vous verrez ces appels xhr et les réponses serveur.

Share this post


Link to post
Share on other sites

Merci de la précision @Eolia. Mon fichier .js est correctement chargé et la fonction est prête a modifier le texte. Mais je ne comprends pas comment "se mettre à la fin de cet appel" après la actionCartSave. Auriez-vous un exemple ? 

Share this post


Link to post
Share on other sites

Je ne travaille pas sur les 1.7 mais votre js effectue un appel ajax, il a donc un retour du serveur.

Share this post


Link to post
Share on other sites

Merci @Eolia de votre réponse, Je n'effectue pas d'appel ajax depuis le js. Ma logique est la suivante

J'effectue mes modifications en BDD grace à la function hookActionCartSave() , et je souhaite mettre a jour le template du panier grâce au JS. La fonction JS sert uniquement a modifier le DOM, rien d'autre. Dans ce cas, comment passer l'information du hook php vers la fonction JS ? La manière ci dessous ne fonctionne pas non plus

 

echo '<script type="text/javascript">updateCartGroup("group3");</script>';

 

Edited by Jibax (see edit history)

Share this post


Link to post
Share on other sites

Ok j'ai finalement réussi a faire ce que je voulais, avec une logique différente

1. Je catch l'evenement lorsque le panier est modifier en JS ( prestashop.on('updatedCart', function(event) {}) )

2. J'effectue mon appel ajax vers le fichier de mon module ajax.php dans cet évenement

3. Je retourne les valeurs que je souhaite dans le résultat de ma requête ajax et je met a jour la vue 

Merci @Eolia pour l'aide

 

Liens utiles

http://www.muzzy.tech/blog/routing-ajax-requests-correct-way-prestashop-modules

Video sur le fonctionnement Ajax <-> Php dans un module

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More