frieurieud Posted March 25, 2015 Share Posted March 25, 2015 (edited) Bonjour à toutes et à tous. Sur ma page produit j'ai rajouter un champs texte. Je souhaite que la valeur saisie dans ce champs soit récupéré par CartController.php c'est à dire lorsque l'on clique sur 'ajout au panier'. Dans le fichier product.tpl j'ai placé mon input "champs_texte" de façon à ce qu'il soit pris en compte dans le form du bouton. <form id="buy_block" {if $PS_CATALOG_MODE AND !isset($groups) AND $product->quantity > 0}class="hidden"{/if} action="{$link->getPageLink('cart')|escape:'html'}" method="post"> <!-- hidden datas --> <p class="hidden"> <input type="hidden" name="token" value="{$static_token}" /> <input type="hidden" name="id_product" value="{$product->id|intval}" id="product_page_product_id" /> <input type="hidden" name="add" value="1" /> <input type="hidden" name="id_product_attribute" id="idCombination" value="" /> <input type="hidden" name="mon_entier" value="" /> <-- ici </p> Ensuite dans CartController.php j'ai procédé comme ceci public $php_self = 'cart'; protected $id_product; protected $id_product_attribute; protected $id_address_delivery; protected $customization_id; protected $qty; public $ssl = true; protected $mon_entier; <-- ma variable et public function init() { parent::init(); // Send noindex to avoid ghost carts by bots header("X-Robots-Tag: noindex, nofollow", true); // Get page main parameters $this->id_product = (int)Tools::getValue('id_product', null); $this->id_product_attribute = (int)Tools::getValue('id_product_attribute', Tools::getValue('ipa')); $this->customization_id = (int)Tools::getValue('id_customization'); $this->qty = abs(Tools::getValue('qty', 1)); $this->id_address_delivery = (int)Tools::getValue('id_address_delivery'); $this->mon_entier= (int)Tools::getValue('mon_entier', 1); <-- Récupération de la valeur saisie } J'envoie ensuite "mon_entier" vers une fonction de Cart.php Et seule la valeur par défaut (ici 1) m'est retournée. Bien sûr si je donne une valeur fixe à $this->mon_entier=10, j'ai bien le retour de cette valeur. En plus, je ne comprends pas comment la valeur du champs "qty" est récupérée car elle ne se trouve pas dans une section "form". En désespoir de cause j'ai placé le champs "mon_entier" un peu partout sur product.tpl mais sans succès. Je ne sais plus trop quoi pensé à part que ce doit être un autre fichier qui récupère les valeurs mais je ne vois pas du tout lequel. Si quelqu'un a une idée sur la question il est le bienvenu Merci. Edited March 25, 2015 by frieurieud (see edit history) Link to comment Share on other sites More sharing options...
J. Danse Posted March 25, 2015 Share Posted March 25, 2015 Bonjour, En fait, la récupération de "qty" qui vous surprends aurait du vous mettre sur la voie... de l'ajax ! Hé oui, l'ajout au panier est en réalité traité par du JavaScript. [https://github.com/PrestaShop/PrestaShop/blob/1.6/themes/default-bootstrap/js/modules/blockcart/ajax-cart.js#L316] C'est en fait dans ce fichier qu'il vous faut modifier la ligne: data: 'controller=cart&add=1&ajax=true&qty=' + ((quantity && quantity != null) ? quantity : '1') + '&id_product=' + idProduct + '&token=' + static_token + ( (parseInt(idCombination) && idCombination != null) ? '&ipa=' + parseInt(idCombination): ''), success: function(jsonData,textStatus,jqXHR) Afin d'y rajouter votre paramètre avec la valeur récupérée via jQuery, finalement. 1 Link to comment Share on other sites More sharing options...
frieurieud Posted March 25, 2015 Author Share Posted March 25, 2015 Bonjour, Damned !!! je n'y avais pas pensé Je vais de ce pas étudier la chose. Merci beaucoup 1 Link to comment Share on other sites More sharing options...
frieurieud Posted March 25, 2015 Author Share Posted March 25, 2015 (edited) YES !!! Ca marche ! Pour ceux que ça intéresse voilà ce que j'ai modifié : Product.tpl <form id="buy_block" {if $PS_CATALOG_MODE AND !isset($groups) AND $product->quantity > 0}class="hidden"{/if} action="{$link->getPageLink('cart')|escape:'html'}" method="post"> <!-- hidden datas --> <p class="hidden"> <input type="hidden" name="token" value="{$static_token}" /> <input type="hidden" name="id_product" value="{$product->id|intval}" id="product_page_product_id" /> <input type="hidden" name="add" value="1" /> <input type="hidden" name="id_product_attribute" id="idCombination" value="" /> <input type="hidden" name="mon_entier" id="idmon_entier" value="" /> <-- ici ajout d'un id </p> ajax-cart.js //send the ajax request to the server $.ajax({ type: 'POST', headers: { "cache-control": "no-cache" }, url: baseUri + '?rand=' + new Date().getTime(), async: true, cache: false, dataType : "json", data: 'controller=cart&add=1&ajax=true&qty=' + ((quantity && quantity != null) ? quantity : '1') + '&id_product=' + idProduct + '&token=' + static_token + ( (parseInt(idCombination) && idCombination != null) ? '&ipa=' + parseInt(idCombination): '') + ( (parseInt(idmon_entier) && idmon_entier!= null) '&masaisie=' + parseInt(idmon_entier): ''), <-- Récupération de mon_entier success: function(jsonData,textStatus,jqXHR) { CartController.php public $php_self = 'cart'; protected $id_product; protected $id_product_attribute; protected $id_address_delivery; protected $customization_id; protected $qty; public $ssl = true; protected $recup_saisie ; <-- ici protected $ajax_refresh = false; public function init() { parent::init(); // Send noindex to avoid ghost carts by bots header("X-Robots-Tag: noindex, nofollow", true); // Get page main parameters $this->id_product = (int)Tools::getValue('id_product', null); $this->id_product_attribute = (int)Tools::getValue('id_product_attribute', Tools::getValue('ipa')); $this->customization_id = (int)Tools::getValue('id_customization'); $this->qty = abs(Tools::getValue('qty', 1)); $this->id_address_delivery = (int)Tools::getValue('id_address_delivery'); $this->recup_saisie = (int)Tools::getValue('masaisie', 1); <-- et là } J'ai fait exprès de placer différents nom (plutôt que mon_entier partout) afin de mieux comprendre le cheminement. Ça fonctionne très bien mais il faut que je règle une chose : maintenant lorsque je clique sur 'ajout au panier' ça me renvoie directement sur la page panier pffff enfin bon c'est les risques du métier ! (ouai bin si c'était plus simple j'aurai encore tout mes cheveux ) Edited March 26, 2015 by frieurieud (see edit history) 1 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now