Jump to content

Recommended Posts

Bonjour à tous, j'écris pour la première fois sur le forum bien que j'ai l'habitude d'y trouver de nombreuses solutions.
Mais là je bloque carrément donc j'aimerais vraiment que l'on puisse me donner un coup de main.
Je m'explique : 
Je crée un Carrier Module qui doit ajouter disons DEUX carrier et qui doit permettre de choisir l'heure de la livraison pour chacun d'eux.    

MAIS pour chacun, les horaires proposés sont différents

 

Pour l'instant j'ai créé mes deux carrier dans mon module, 

et j'ai greffé le module sur mon nouveau hook   $this->registerHook('monNewHook') ;  

Ce hook est appelé dans order-template.tpl    {hook h='monNewHook'}      en rajouter un <td> dans le carrier déjà présent.

 

Ensuite, dans la fonction hookMonNewHook($params) j'ai aussi réussi à afficher un template (contenu dans le module) qui va afficher un select.
Le probleme c'est que je n'arrive pas à faire en sorte d'envoyer par la fonction hookMonNewHook une variable qui serait propre à chaque Carrier. Par exemple, j'aimerais pouvoir récupérer dans le template :

- pour le carrier 1 => les horaires 1

- pour le carrier 2 => les horaires 2

 

Le probleme c'est que mon template donne bien entendu (et cela semble logique) le même résultat pour chacun des deux templates

Je n'ai donc aucune idée de la manière donc je peux m'y prendre pour faire passer au template la variable que je souhaite au moment ou je souhaite vu que la fonction hookMonNewHook   revient à afficher le même template et à faire les même traitements pour chaque Carrier.

 

Si quelqu'un pouvait m'aider j'en serais grandement reconnaissant !

 

Merci d'avance

Share this post


Link to post
Share on other sites

Bonjour,

Vous souhaitez recuperer ces variables depuis votre module?

Je crois que ces variables doivent etre accessibles depuis controllers/front/OrderController.php .

Il faut jeter un coup d'oeil sur ce controller la vous saurez quelle hook appeler depuis votre module.

Share this post


Link to post
Share on other sites

En fait il me semble que je me suis mal expliqué

J'ai trouvé une solution à mon problème qui consistait simplement à ajouter dans les propriétés du module la propriété   public $id_carrier

Et lors de l'installation, cela instancie automatiquement cette valeur par la valeur de l'id du carrier

Ainsi, lors de l'appel à la fonction de hook, je peux faire un traitement selon l'id du carrier

Je ne sais pas si c'est la meilleure facon de procéder, mais pour le moment c'est la seule que j'ai trouvé

Si quelqu'un a une autre idée, merci de m'en faire partager 

Share this post


Link to post
Share on other sites

Oui, si vous arrivez a recuperer vos variables comme vous l'aviez souhaiter je crois que  ca va.

Mais pour $id_carrier vous pouvez aussi utiliser la class Context.

$context=Context::getContext();
$id_carrier=$context->cookie->id_carrier;

Et ca depuis n'importe ou.

Edited by ndiaga (see edit history)

Share this post


Link to post
Share on other sites

Ok donc dans mon cas on a trouvé une solution

Par contre j'avoue ne pas être certain de pouvoir me débrouiller comme ca à chaque fois.

Et aussi, j'ai essayé votre methode dans la fonction getOrderShippingCost, cela n'a pas fonctionné (ca me renvoie 0 à chaque fois)

D'ailleurs chose singulière, la fonction getOrderShippingCost semble s'appeler 4 fois par transporteur. Est-ce normal ? 

Share this post


Link to post
Share on other sites

Non en fait pour tester un peu mon code, j'ai mis dans la fonction getOrderShippingCost de mon module  un var_dump afin de tester si j'arrive bien à recevoir mon id_carrier comme souhaité.
Et le résultat s'affiche 4 fois d'affilé pour chaque transporteur. Si j'enlève le var_dump on n'y voit rien bien sur (il n'y a alors qu'un return dans cette fonction qui transmet le prix au transporteur)

Ca m'a paru bizarre mais est-ce un comportement de prestashop en général ?

Share this post


Link to post
Share on other sites

Non en fait pour tester un peu mon code, j'ai mis dans la fonction getOrderShippingCost de mon module  un var_dump afin de tester si j'arrive bien à recevoir mon id_carrier comme souhaité.

Et le résultat s'affiche 4 fois d'affilé pour chaque transporteur. Si j'enlève le var_dump on n'y voit rien bien sur (il n'y a alors qu'un return dans cette fonction qui transmet le prix au transporteur)

Ca m'a paru bizarre mais est-ce un comportement de prestashop en général ?

La c'est au dela de mes competances. Est ce qu'il n'ya pas d'autres modules carriers qui sont installes ? Peut etre que votre appelle a cette function se fait 4 fois dans differents endroits et vous ne parvenez pas a vous en rendre compte. Bon y'a bcp de suppositions qu'on pourait faire dans ce cas de figure. 

Edited by ndiaga (see edit history)

Share this post


Link to post
Share on other sites

Non justement c'est bien ce que je pense

Il doit y avoir une logique dans prestashop qui fait que ces fonctions (getOrderShippingCost  et celle Extra) sont appelées plusieurs fois

J'ai déjà lu un post en anglais concernant cette question, mais qui était restée sans réponse.
Pour l'instant je me contente de cela merci de votre aide ;)  :rolleyes:  :rolleyes:

Share this post


Link to post
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...

Important Information

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