Jump to content
Serial

Récupérer l'id de la déclinaison choisie

Recommended Posts

Bonjour,

Dans mon module, j'aimerai récupérer l'ID de la déclinaison sélectionnée par l'utilisateur.

En fait, celui-ci arrive sur une fiche produit, choisi sa déclinaison et clique sur un bouton submit.

J'aimerai donc, dans mon contrôleur, avoir l'ID de la déclinaison qu'il a choisit.

 

Merci :)

Share this post


Link to post
Share on other sites

Dans votre controller ? Il est ou ? C'est un module de panier ?

Il faut plus d'info pour vous aider.

L'ipa passe en POST dans tout les cas.
 

Share this post


Link to post
Share on other sites

Je débute dans le développement de modules :/

En fait lorsque le client clique sur ce bouton dans la fiche produit, j'atteris sur le template de mon module avec l'id du produit en paramètre (url : http://www.monsite.fr/monmodule/validation?produit=XXXXXXX)

J'affiche des infos du produit et j'aimerai récupérer donc l'id de la déclinaison choisie.

 

Share this post


Link to post
Share on other sites
En fait, celui-ci arrive sur une fiche produit, choisi sa déclinaison et clique sur un bouton submit.


Tu dois bien avoir un formulaire si il y a un bouton submit ? Il est ou ce formulaire ?

Share this post


Link to post
Share on other sites
4 minutes ago, okom3pom said:

En fait, celui-ci arrive sur une fiche produit, choisi sa déclinaison et clique sur un bouton submit.


Tu dois bien avoir un formulaire si il y a un bouton submit ? Il est ou ce formulaire ?

Oui dans mon product.tpl :

<form action="{$link->getModuleLink('confectiontdu', 'validation', ['produit'=>$product->id], true)|escape:'html'}" method="post">
	<input id="envoi_conf" type="submit" value="{l s='Confection' mod='confectiontdu'}" name="validation" class="button">
</form>

 

Edited by Serial (see edit history)

Share this post


Link to post
Share on other sites

Je me doute qu'il est dans ton product.tpl mais ou dans le product.tpl ?

Avant le FORM ajouter au panier ? Après ? Ou dedans ?

Selon la réponse ce n'est pas la même solution.  

Share this post


Link to post
Share on other sites

Oki donc dans ton formulaire tu ajoutes :

 

<input type="hidden" name="ipa" id="ipa" value="" />


Dans le product.js de ton thème sous la ligne
https://github.com/PrestaShop/PrestaShop/blob/1.6.1.x/themes/default-bootstrap/js/product.js#L471

Tu ajoutes :

$('#ipa').val(combination['idCombination']);

 

Et dans ton controller normalement tu peux récupérer la variable avec :

$ipa = Tools::getValue('ipa');

Ce n'est pas la meilleure des solutions, j'aurais utilisé un hook pour afficher le formulaire et également surcouché le js pour ne pas modifier celui du thème.

Mais bon tu as un truc fonctionnel qui te permettra d'apprendre. 

EDIT : oups pas id_product_attribute mais ipa 

Edited by okom3pom (see edit history)

Share this post


Link to post
Share on other sites

Tu as quelle version de prestashop ? 

Chez moi ça fonctionne et comme dit plus haut je t'aiguille je ne vais pas faire ton code à ta place ... 

Tu as bien le js modifié ? Tu as vidé tes caches ? Tu as lu l'édite  de mon message ?

J'ai fais toutes les modifs, mais je n'ai rien lorsque je récupère la valeur :/

Je ne sais même pas ce que tu as modifié, ta version ... 

Share this post


Link to post
Share on other sites

Je suis en PS 1.6.1.0.

J'ai ajouté le input de type hidden sur mon formulaire actuel.

J'ai rajouté la ligne dans le product.js de mon thème permettant de récupérer la valeur de la déclinaison choisie.

Enfin le Tools::getValue('ipa'); ne me retourne rien.

 

Oui oui bien sur ^^

Share this post


Link to post
Share on other sites

Voici mon formulaire du template product.tpl :

<form action="{$link->getModuleLink('confectiontdu', 'validation', ['produit'=>$product->id], true)|escape:'html'}" method="post">
	<input type="hidden" name="ipa" id="ipa" value="">
	<input id="envoi_conf" type="submit" value="{l s='Confection' mod='confectiontdu'}" name="validation" class="button">
</form>

Le code rajouté dans le javascript product.js :

$('#ipa').val(combination['idCombination']);

Et enfin dans mon contrôleur :

$ipa = (int)Tools::getValue('ipa');

A l'inspection de la page, j'ai bien ma ligne du formulaire écrit comme ceci (avec aucune valeur dans value) :

<input type="hidden" name="ipa" id="ipa" value>

 

Edited by Serial (see edit history)

Share this post


Link to post
Share on other sites

Est ce que tu as une url pour que je vois.

Tu n'aurais pas une redirection sinon ? 

Share this post


Link to post
Share on other sites

Je suis en local sur mon poste :/

Une redirection ? Je peux voir ca ou ?

J'ai un doute sur le product.js si tu regardes le code d'avant, ce n'est pas la même forme :

//combination of the user has been found in our specifications of combinations (created in back office)
selectedCombination['unavailable'] = false;
selectedCombination['reference'] = combinations[combination]['reference'];
$('#idCombination').val(combinations[combination]['idCombination']);
$('#ipa').val(combination['idCombination']);

 

Edited by Serial (see edit history)

Share this post


Link to post
Share on other sites

J'ai mis ca mais pas de changements :/

$('#ipa').val(combinations[combination]['idCombination']);

 

Share this post


Link to post
Share on other sites

Quand tu inspectes le code tu vois la valeur de l'ipa changer quand tu changes de déclinaison ? 

Share this post


Link to post
Share on other sites

Non, en fait quand j'inspecte le code dans le input j'ai juste value sans le =""

Share this post


Link to post
Share on other sites

Hum ce n'est pas logique tu as bien rechargé les .js vidé le cache etc etc 

Je n'ai pas de 1.6.0.x sous la main pour tester

Share this post


Link to post
Share on other sites

J'ai écris cette ligne juste avant dans le product.js de mon thème :

alert("Test");

Et je ne vois pas l'alerte... On dirait que ca ne passe jamais à cet endroit...

Share this post


Link to post
Share on other sites

Parfait j'ai trouvé !

La méthode était surchargée par un module !

 

Merci à toi :)

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