lion-s Posted January 11, 2016 Share Posted January 11, 2016 prestashop version 1.6.1.3thème default-bootstrap de prestashopserveur localbonsoirj'essaie d'ajouter le bloc formulaire (ou bloc commentaire) de la page Adresse pour le mettre dans la page Livraison du processus de commande (en 5 étape) pour que le client puisse laisser un message pour sa livraison et que son message soit récupéré dans le BOj'ai copié le code du formulaire qui est dans order-address.tpl (Adresse) de la ligne 94 à 99{if !$opc}<div id="ordermsg" class="form-group"><label>{l s='If you would like to add a comment about your order, please write it in the field below.'}</label><textarea class="form-control" cols="60" rows="6" name="message">{if isset($oldMessage)}{$oldMessage}{/if}</textarea></div>{/if}pour le coller dans order-carrier.tpl juste au dessus du bloc navigation Continuer mes achats et Commanderle bloc du formulaire apparaît dans la page Livraison du processus de commande, mais le message ne s'affiche pas en BO, dans le bloc des messages de la commande client, ni dans les messages.par contre si j’écris le message dans le formulaire depuis la page Adresse du processus de commande (qui est son emplacement), il s'affiche dans le bloc des messages de la commande client et dans les messages en BOune petite idée serait la bienvenu, je vous remercie par avance, Link to comment Share on other sites More sharing options...
Mediacom87 Posted January 12, 2016 Share Posted January 12, 2016 Bonjour, certainement que le code php qui récupère les données et les enregistre n'est présent que sur la page adresse. Link to comment Share on other sites More sharing options...
lion-s Posted January 12, 2016 Author Share Posted January 12, 2016 bonjour est ce que tu sais quel est le code PHP qui permet de récupérer les données. dans l'attente, je te remercie par avance média Link to comment Share on other sites More sharing options...
Mediacom87 Posted January 12, 2016 Share Posted January 12, 2016 Dans controllers/front/OrderController.php dans public function processAddress() il y a if (Tools::isSubmit('message')) { $this->_updateMessage(Tools::getValue('message')); } et dans controllers/front/ParentOrderController.php protected function _updateMessage($messageContent) { if ($messageContent) { if (!Validate::isMessage($messageContent)) { $this->errors[] = Tools::displayError('Invalid message'); } elseif ($oldMessage = Message::getMessageByCartId((int)$this->context->cart->id)) { $message = new Message((int)$oldMessage['id_message']); $message->message = $messageContent; $message->update(); } else { $message = new Message(); $message->message = $messageContent; $message->id_cart = (int)$this->context->cart->id; $message->id_customer = (int)$this->context->cart->id_customer; $message->add(); } } else { if ($oldMessage = Message::getMessageByCartId($this->context->cart->id)) { $message = new Message($oldMessage['id_message']); $message->delete(); } } return true; } Link to comment Share on other sites More sharing options...
lion-s Posted January 12, 2016 Author Share Posted January 12, 2016 je te remercie media, j'ai localisé le code sur les 2 pages que tu m'as cité. question bête, ce code je le place dans quel page ? Link to comment Share on other sites More sharing options...
Mediacom87 Posted January 12, 2016 Share Posted January 12, 2016 regardez le controller de commande pour trouver l'élément utilisé après le choix de la livraison et mettez if (Tools::isSubmit('message')) { $this->_updateMessage(Tools::getValue('message')); } dedans pour qu'il soit traité lors de l'enregistrement du choix du transporteur. Link to comment Share on other sites More sharing options...
lion-s Posted January 12, 2016 Author Share Posted January 12, 2016 je dois collé le code dans controllers/front/ParentOrderController.php comme ceci protected function _updateMessage($messageContent) { if ($messageContent) { if (!Validate::isMessage($messageContent)) { $this->errors[] = Tools::displayError('Invalid message'); } elseif ($oldMessage = Message::getMessageByCartId((int)$this->context->cart->id)) { $message = new Message((int)$oldMessage['id_message']); $message->message = $messageContent; $message->update(); } else { $message = new Message(); $message->message = $messageContent; $message->id_cart = (int)$this->context->cart->id; $message->id_customer = (int)$this->context->cart->id_customer; $message->add(); } } else { if ($oldMessage = Message::getMessageByCartId($this->context->cart->id)) { $message = new Message($oldMessage['id_message']); $message->delete(); } } if (Tools::isSubmit('message')) { $this->_updateMessage(Tools::getValue('message')); } return true; } Link to comment Share on other sites More sharing options...
Mediacom87 Posted January 12, 2016 Share Posted January 12, 2016 non le parent controller est le controller proposant la fonction d'enregistrement du message. il suffit dans le controler traitant la livraison (le premier controller donné) de déplacer l'appel de la fonction. Link to comment Share on other sites More sharing options...
lion-s Posted January 12, 2016 Author Share Posted January 12, 2016 bien qu'il m'arrive de faire des petites modifications en PHP, ce n'est pas un logiciel que je maitrise, si tu pouvais m'indiquer comment faire ce serait cool. Link to comment Share on other sites More sharing options...
Mediacom87 Posted January 12, 2016 Share Posted January 12, 2016 vous devez déplacer if (Tools::isSubmit('message')) { $this->_updateMessage(Tools::getValue('message')); } dans function processCarrier() je suppose Link to comment Share on other sites More sharing options...
lion-s Posted January 12, 2016 Author Share Posted January 12, 2016 dans controllers/front/ParentOrderController.php je n'au pas trouvé de function processCarrier j'ai déplacé le code dans controllers/front/OrderController.php, mais cela ne fonctionne pas protected function processCarrier() { global $orderTotal; parent::_processCarrier(); if (count($this->errors)) { $this->context->smarty->assign('errors', $this->errors); $this->_assignCarrier(); $this->step = 2; $this->displayContent(); } $orderTotal = $this->context->cart->getOrderTotal(); if (Tools::isSubmit('message')) { $this->_updateMessage(Tools::getValue('message')); } } Link to comment Share on other sites More sharing options...
lion-s Posted January 12, 2016 Author Share Posted January 12, 2016 juste pour te dire que cela fonctionne media. problème Résolu je te remercie pour ton aide. christophe 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