Jump to content

Champ perso dans commande depuis le panier


Recommended Posts

Bonjour,

 

Je suis en train de développer un module pour ajouter un champ perso dans la commande. Pour cela je passe bien évidemment par le panier pour que l'utilisateur puisse saisir ce champ. Mais j'ai un petit soucis.

 

J'ai réussi à faire fonctionner mon champ lorsque l'utilisateur saisie sa donnée, elle apparait bien en bdd, mais lorsque l'utilisateur arrive sur la page des paiements, le champ en bdd est effacé. Je n'arrive vraiment pas à comprendre.

 

A titre d'info, à l'installation mon module surchage Cart.php et Order.php pour créer mon champ et bien sur les entrèes en bdd sont aussi créer. La saisie utilisateur est récupérer en ajax pour l'insérer dans la bdd. Mon module est donc simplement accroché à "hookHeader" pour les css/js et "hookDisplayShoppingCartFooter" pour l'affichage du formulaire.

 

Quelqu'un pourrait me dire comment faire pour que mon champ ne soit pas effacé sur la page des paiements ? Et peut-on aussi me confirmer que mon champ passera automatiquement dans la commande en suivant ?

 

Merci d'avance.

 

Driss

Link to comment
Share on other sites

Bonjour à tous, je revient pour signaler que j'ai résolu mon problème et donner les infos pour ceux que ça pourrait intéresser.

 

Mon problème etait du au fait que j'enregistrer mon champ sur le hook actionCartSave et comme ce dernier est appelé sur plusieurs étapes du processus de commande (peut-être même toutes) et que ma variable n'apparaissait qu'à l'étape 1, elle finissait par être effacée puisque considérer comme vide. J'ai donc enregistrer cette dernière via une fonction ajax dont voici le code :

$("#form").submit(function() {
	$.ajax({
		url: baseDir +"modules/module_name/ajax.php",
		type: "POST",
		data: "ajax=true&name="+$("#champ").val(),
		success: function(data)
		{
			console.log(data);
		}
	});
});
<?php
require_once(dirname(__FILE__).'../../../config/config.inc.php');
require_once(dirname(__FILE__).'../../../init.php');

$cookie = Context::getContext()->cookie;
$id_cart = $cookie->id_cart;
$champ = Tools::getValue('name');

$sql = 'UPDATE '._DB_PREFIX_.'cart SET nouveau_champ = "'. $champ .'" WHERE id_cart = "'. $id_cart .'"';

if (!Db::getInstance()->Execute($sql)) {
	echo "Une erreur dans la base de donnée est survenue.";
	return false;
}
return true;

Voila, il suffisait ensuite sur le hook actionValidateOrder de transférer le champ du panier vers la commande.

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