Jump to content

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


Jibax

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)
Link to comment
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.

Link to comment
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)
Link to comment
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

 

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...