Jump to content

[Résolu] Problème nouveaux champs dans le formulaire de contact


Recommended Posts

Bonjour à tous,

Je suis un nouvel utilisateur de Prestashop 1.4.1 et j'ai un peu de mal à modifier le formulaire de contact.
J'ai réussi à modifier le template, mais par contre, les champs que j'ai rajoutés ne s'envoient pas dans le mail.

Sauriez-vous quel fichier il faut modifier pour ajouter mes nouveaux champs dans le mail ?

Merci d'avance pour votre aide.

Link to comment
Share on other sites

Bonjour,

Merci beaucoup pour ta réponse :-)

Ça marche presque, j'ai bien réussi à afficher mes nouveaux champs dans mon email, mais par contre, quand j'écris « Nom : {nom} » dans le fichier contact.html, il ne m'affiche pas le Nom que j’ai rentré dans le formulaire à la place de {nom} dans mon email.

Saurais-tu où se trouve l'autre fichier à modifier ?

Merci encore pour ton aide.

Link to comment
Share on other sites

Il faut que tu passes tes nouveaux champs au fichier contact.html.

Trouve la fonction qui récupère les variables de ton formulaire, et qui crée l'e-mail. (Fonction Send de la classe Mail, un des paramètres de cette fonction est un tableau contenant les variables à afficher dans l'e-mail)

Si tu es avec la dernière version de Presta (1.4), cela se passe dans ContactController.php

Bon courage!

Link to comment
Share on other sites

Bonjour,
Je cherche la même chose mais j'arrive pas à ajouter les champs.
Est-ce que vous pouvez expliquer ce que vous avez fait pour cela.
J'aimerais bien en avoir un exemple du code.
Je vous remercie en avance.
Aany

Link to comment
Share on other sites

Pour ajouter les champs au formulaire, il faut trouver le fichier template correspondant soit contact-form.tpl

Une fois les champs ajoutés, reprend cette discussion du début et tu devrais réussir !

Link to comment
Share on other sites

Il faut que tu passes tes nouveaux champs au fichier contact.html.

Trouve la fonction qui récupère les variables de ton formulaire, et qui crée l'e-mail. (Fonction Send de la classe Mail, un des paramètres de cette fonction est un tableau contenant les variables à afficher dans l'e-mail)

Si tu es avec la dernière version de Presta (1.4), cela se passe dans ContactController.php

Bon courage!


Si c'est une version inférieure à 1.4, cela se passe dans la classe Contact.php et le fichier contact-form.php
Link to comment
Share on other sites

merci! j'ai réussi grâce à vous.
J'ai une autre question, c'est bien dans contactcontroller.php qu'il faut écrire le code pour ajouter les données (comme nom, prenom...) dans la base?
J'ai essayé de récupérer les données et les mettre dans la table customer_thread mais elles ne sont pas enregistrées dans la base.

Link to comment
Share on other sites

Bonjour a tous,

Votre post m'a déjà bien aidé. Cependant j'ai encore un problème, j'ai ajouté au formulaire de contact une liste déroulante reprenant les différentes catégories de produits. J'aimerais que la catégories choisie apparaisse dans le mail.

Je ne sais pas comment récupérer les données dans le fichier ContactController.php. A vrai dire je ne suis pas un spécialiste du php.

Je vous remercie d'avance pour votre aide.

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

j'ai fais des essais également j'ai voulu ajouter le champ nom à contact-form.tpl et je l'ai ajouté également à contact.html pour qu'il soit envoyé par mail. Seulement à l'envoi j'ai la variable non interprété {nom} comme M@trox au début.
J'ai tenté d'ajouté la nouvelle variable dans ContactController.php mais sans succès.

if (!empty($contact->email))
               {
                   if (Mail::Send((int)(self::$cookie->id_lang), 'contact', Mail::l('Message from contact form'), array('{email}' => $from, $nom '{message}' => stripslashes($message)), $contact->email, $from, ((int)(self::$cookie->id_customer) ? $customer->firstname.' '.$customer->lastname : ''), $fileAttachment)
                       AND Mail::Send((int)(self::$cookie->id_lang), 'contact_form', Mail::l('Your message has been correctly sent'), array('{message}' => stripslashes($message)), $from))
                       self::$smarty->assign('confirmation', 1);
                   else
                       $this->errors[] = Tools::displayError('An error occurred while sending message.');
               }



si quelqu'un peut apporter plus de précision sur comment récupérer la variable ce serait sympa :)
Merci

Link to comment
Share on other sites

Bonjour richard03,
Je vous montre ce que j'ai fait et ca marcha tres bien.
Dans contact-form.tpl (je vous donne un exemple d'ajout de champ "nom" pour que ce soit plus clair)


{l s='Last name'}
           <input>
*



Dans ContactController.php

if (!empty($contact->email))
               {
                   if (Mail::Send((int)(self::$cookie->id_lang), 'contact', Mail::l('Message from contact form'), array('{email}' => $from,'{gender}'=> $_POST['id_gender'],'{firstname}' => $_POST['firstname'], '{lastname}' => $_POST['lastname'],'{company}' => $_POST['company'], '{tel}' => $_POST['tel'],'{message}' => stripslashes($message)), $contact->email, $contact->name, $from, ((int)(self::$cookie->id_customer) ? $customer->firstname.' '.$customer->lastname : ''), $fileAttachment)
                       AND Mail::Send((int)(self::$cookie->id_lang), 'contact_form', Mail::l('Your message has been correctly sent'), array('{message}' => stripslashes($message)), $from))

                       {
                           self::$smarty->assign('confirmation', 1);
                       }
                   else
                       $this->errors[] = Tools::displayError('An error occurred while sending message.');
               }


Aany

Link to comment
Share on other sites

Merci beaucoup aany en effet ça marche! :)

Je relance une dernière question pour la route ^^, quelqu'un arrive à afficher l'objet du message dans le mail?
car dans mon cas je veux controler tous les mails qui sont envoyé via le formulaire de contact.
Pour le moment j'arrive à afficher l'id_contact dans le mail mais pas la valeur qu'on lui donne par exemple par défaut "webmaster" ou "service client".
Sinon je ferai avec l'id et j'ajouterai une légende dans le mail (système D ^^)
Merci

Link to comment
Share on other sites

Moi, j'ai différents adresses mails pour différents services donc je me suis pas posé cette question mais c'est bien cette idée de mettre une légende :).
Est-ce que vous aurez une idée sur comment on ajoute les données de nouveaux champs dans la base? Je ne suis pas une experte en php et base de données donc il y a sûrement quelque chose qui m'échappe. Je sais que les données de messages sont enregistrées dans la table 'customer_thread' mais comment faire...
Merci en avance.
Aany

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