fatima1991 Posted July 27, 2012 Share Posted July 27, 2012 Bonjour , J'ai besoin de créer un second formulaire basé sur contact-form ,J'ai bien dupliqué le contact-form.php, son .tpl et ContactController.php en modifiant ce dernier le nom de fichier php par celui que j'ai ajouté mais tjr la redirection se fait vers le fichier contact-form d'origine svp , quelle sont les étapes à suivre pour dupliquer un formulaire dans prestashop et l'integrer dans une page Link to comment Share on other sites More sharing options...
franckm1000 Posted July 27, 2012 Share Posted July 27, 2012 (edited) La duplication d'un formulaire ne se fait pas "comme ça" par miracle rien qu'en changeant le nom ! Dans le fichier controller avez-vous changé l'appel à la fin ? public function displayContent() { $_POST = array_merge($_POST, $_GET); parent::displayContent(); self::$smarty->display(_PS_THEME_DIR_.'contact-form.tpl'); } Sachant que de loin le plus simple est de créer un formulaire à part entière. Tu crées ta page formulaire.php que tu places à la racine du site: <?php include(dirname(__FILE__).'/config/config.inc.php'); if(intval(Configuration::get('PS_REWRITING_SETTINGS')) === 1) $rewrited_url = __PS_BASE_URI__; include(dirname(__FILE__).'/header.php'); $smarty->display(_PS_THEME_DIR_.'formulaire.tpl'); include(dirname(__FILE__).'/footer.php'); ?> Tu crées un fichier formulaire.tpl dans le répertoire thèmes. Dans ce fichier tu mets ton formulaire de ce genre: ... <form action="{request_uri}" method="post"> <input type="text" name="champs_1" /> <input type="text" name="champs_2"> ... <input type="submit" name="bouton" /> </form> ... Ensuite tu édites le premier fichier diaporama.php en y intégrant la réception des données: <?php include(dirname(__FILE__).'/config/config.inc.php'); if(intval(Configuration::get('PS_REWRITING_SETTINGS')) === 1) $rewrited_url = __PS_BASE_URI__; include(dirname(__FILE__).'/header.php'); //Je récupère les valeurs if(Tools::isSubmit('bouton')){ //je traite $champs_1=Tools::getValue('champs_1'); Etc... } $smarty->display(_PS_THEME_DIR_.'formulaire.tpl'); include(dirname(__FILE__).'/footer.php'); ?> Edited July 27, 2012 by franckm1000 (see edit history) 1 Link to comment Share on other sites More sharing options...
fatima1991 Posted July 31, 2012 Author Share Posted July 31, 2012 merci bq bq franckm1000 , mon prb est résolu Link to comment Share on other sites More sharing options...
grafifred Posted November 9, 2012 Share Posted November 9, 2012 je cherche aussi à faire un autre formulaire, j'ai fait un nouveau tpl et un nouveau php comme indiqué ci-dessus, mais celui-ci n'envoie pas les données. J'ai du oublié quelque chose. Faut-il rajouter un dossier mail quelque part avec des données html ? Si quelqu'un peut m'aider. Merci Link to comment Share on other sites More sharing options...
grafifred Posted November 11, 2012 Share Posted November 11, 2012 Personne pour m'aider ? Voici mon formulaire php à la racine de mon site : <?php include(dirname(__FILE__).'/config/config.inc.php'); if(intval(Configuration::get('PS_REWRITING_SETTINGS')) === 1) $rewrited_url = __PS_BASE_URI__; include(dirname(__FILE__).'/header.php'); $smarty->display(_PS_THEME_DIR_.'creation-form2.tpl'); include(dirname(__FILE__).'/footer.php'); require(dirname(__FILE__).'/config/config.inc.php'); ControllerFactory::getController('CreationController')->run(); ?> <?php include(dirname(__FILE__).'/config/config.inc.php'); if(intval(Configuration::get('PS_REWRITING_SETTINGS')) === 1) $rewrited_url = __PS_BASE_URI__; include(dirname(__FILE__).'/header.php'); //Je récupère les valeurs if(Tools::isSubmit('submitcrea')){ //je traite $bateau=Tools::getValue('bateau'); $longueur=Tools::getValue('longueur'); $nom=Tools::getValue('nom'); $prenom=Tools::getValue('prenom'); $adresse=Tools::getValue('adresse'); //$cp=Tools::getValue('cp'); //$ville=Tools::getValue('ville'); $telephone=Tools::getValue('telephone'); $email=Tools::getValue('email'); $fileUpload=Tools::getValue('fileUpload'); $message=Tools::getValue('message'); $from = '[email protected]'; } $smarty->display(_PS_THEME_DIR_.'creation-form2.tpl'); $smarty->assign('submitcrea',$bsubmitcrea); include(dirname(__FILE__).'/footer.php'); ?> Et mon formulaire tpl dans le théme de celui-ci : {capture name=path}{l s='Creation'}{/capture} {include file="$tpl_dir./breadcrumb.tpl"} <div class="rte cms"> <h1>Création personnalisée</h1> <h3>Nous pouvons réaliser la décoration unique de votre bateau, d'après une photo, un dessin ou une idée.</br> Remplissez le plus précidément possible le formulaire ci-dessous et nous vous enverrons un devis ou nous vous recontacterons </h3> <form action="{$request_uri}" method="post"class="std"enctype="multipart/form-data"> <fieldset> <h3>Devis personnalisé :</h3> <p align="center" class="required"><strong>{l s='Les champs marques d\'une'} <sup>*</sup> {l s='doivent etre obligatoirement remplis'}</strong></p> <p> </p> <p class="required text"> <label for="bateau"> Type/Marque du bateau :</label> <input type="text" id="bateau" name="bateau" value="{if isset($smarty.post.bateau)}{$smarty.post.bateau|escape:'htmlall'|stripslashes}{/if}" /> <sup>*</sup> </p> <p class="required text"> <label for="longueur"> Longueur de la coque :</label> <input type="text" id="longueur" name="longueur" value="{if isset($smarty.post.longueur)}{$smarty.post.longueur|escape:'htmlall'|stripslashes}{/if}" /> <sup>*</sup> </p> <p class="required text"> <label for="nom"> Votre nom :</label> <input type="text" id="nom" name="nom" value="{if isset($smarty.post.nom)}{$smarty.post.nom|escape:'htmlall'|stripslashes}{/if}" /> <sup>*</sup> </p> <p> <label for="prenom">Votre prenom</label> <input type="text" id="prenom" name="prenom" value="{if isset($smarty.post.prenom)}{$smarty.post.prenom|escape:'htmlall'|stripslashes}{/if}" /> </p> <p class="required text"> <label for="mail_client"> Votre email :</label> <input type="text" id="mail_client" name="mail_client" value="{if isset($smarty.post.mail_client)}{$smarty.post.mail_client|escape:'htmlall'|stripslashes}{/if}" /> <sup>*</sup> </p> <p class="required text"> <label for="telephone"> Votre téléphone :</label> <input type="text" id="telephone" name="telephone" value="{if isset($smarty.post.telephone)}{$smarty.post.telephone|escape:'htmlall'|stripslashes}{/if}" /> <sup>*</sup> </p> <p class="required text"> <label for="adresse">Votre adresse :</label> <textarea id="adresse" name="adresse" rows="4" cols="35">{if isset($smarty.post.adresse)}{$smarty.post.adresse|escape:'htmlall':'UTF-8'|stripslashes}{/if}</textarea> <sup>*</sup> </p> <p class="required text"> <label for="message"> Votre demande :</label> <textarea id="message" name="message" rows="7" cols="35">{if isset($smarty.post.message)}{$smarty.post.message|escape:'htmlall':'UTF-8'|stripslashes}{/if}</textarea> <sup>*</sup> </p> <p> Vous pouvez accompagner votre demande en nous envoyant une photo depuis votre ordinateur </p> <p class="textarea"> <label for="message">Votre photo : </label> <input type="file" name="attachment"> </p> <p> </p> <p class="bold" align="center">Attention : verifiez bien votre email car le devis vous sera envoye par courrier electronique.</p> <p class="submit"> <input type="hidden" id="email" name="email" value="[email protected]" /> <input type="submit" name="submitcrea" value="{l s='Envoyer ma demande' mod=''}" class="button_large" /> </p> </fieldset> </form> </div> Tout s'affiche correctement, mais je ne recois pas les informations sur mon mail. J'ai du oublié quelquechose, faut-il rajouter une table dans la base de données ? Merci pour votre aide Fred Link to comment Share on other sites More sharing options...
franckm1000 Posted November 11, 2012 Share Posted November 11, 2012 (edited) Ton fichier PHP est ... horrible... Pourquoi tu appelles plusieurs fois le fichier config????? include(dirname(__FILE__).'/config/config.inc.php'); Pourquoi appeler 2 fois le TPL ??? $smarty->display(_PS_THEME_DIR_.'creation-form2.tpl'); Tu récupères les valeurs: if(Tools::isSubmit('submitcrea')){ //je traite $bateau=Tools::getValue('bateau'); $longueur=Tools::getValue('longueur'); $nom=Tools::getValue('nom'); $prenom=Tools::getValue('prenom'); $adresse=Tools::getValue('adresse'); //$cp=Tools::getValue('cp'); //$ville=Tools::getValue('ville'); $telephone=Tools::getValue('telephone'); $email=Tools::getValue('email'); $fileUpload=Tools::getValue('fileUpload'); $message=Tools::getValue('message'); Mais tu n'en fais rien ! Pour envoyer un mail, il faudrait déjà commencer par utiliser la fonction mail() Et tu espères assigner quoi avec ça : $smarty->assign('submitcrea',$bsubmitcrea); Elève Grafifred, cela ne va pas du tout ! Bon essaies plutôt un truc comme ça: <?php include(dirname(__FILE__).'/config/config.inc.php'); if(intval(Configuration::get('PS_REWRITING_SETTINGS')) === 1) $rewrited_url = __PS_BASE_URI__; include(dirname(__FILE__).'/header.php'); //Je récupère les valeurs if(Tools::isSubmit('submitcrea')) { $bateau=Tools::getValue('bateau'); $longueur=Tools::getValue('longueur'); $nom=Tools::getValue('nom'); $prenom=Tools::getValue('prenom'); $adresse=Tools::getValue('adresse'); //$cp=Tools::getValue('cp'); //$ville=Tools::getValue('ville'); $telephone=Tools::getValue('telephone'); $email=Tools::getValue('email'); $fileUpload=Tools::getValue('fileUpload'); $message=Tools::getValue('message'); $monmail="[email protected]"; $headers= "MIME-version: 1.0\n"; $headers.= "Content-type: text/html; charset=utf-8\n"; $headers.="From: [email protected]\n"; $texte="Mettre mon texte en style pour récupérer toutes mes variables.<br />Bateau:".$bateau."<br />Longueur:".$longueur."<br />Etc avec toutes les autres variables :".$nom." ".$prenom." ".$adresse." ".$telephone." ".$email." ".$message; mail($monmail,"contact depuis le formulaire",$texte,$header); $smarty->assign('message','Votre message a bien été envoyé !'); } $smarty->display(_PS_THEME_DIR_.'creation-form2.tpl'); include(dirname(__FILE__).'/footer.php'); ?> Tu remplaces $monmail par ton vrai mail, et tu mets comme tu veux $texte pour que ça apparaisse comme tu veux sur ton mail. Côté TPL, tu rajoutes où tu veux: {if $message}{$message}{/if} Pour afficher le message d'envoi. J'ai pas testé mais normalement ça doit marcher à moins que ton serveur ne te fasse des embrouilles avec la fonction mail() ce qui peut parfois arriver. Edited November 11, 2012 by franckm1000 (see edit history) Link to comment Share on other sites More sharing options...
grafifred Posted November 11, 2012 Share Posted November 11, 2012 Merci beaucoup pour ton aide, je suis vraiment nulle, et à force d'avoir bidouillé le fichier, j'ai fait des doublons. Malheureusement, ça ne marche toujours pas, j'ai l'impression que les fonctions $smarty ne sont pas prise en compte c'est possible ? Link to comment Share on other sites More sharing options...
franckm1000 Posted November 11, 2012 Share Posted November 11, 2012 Comment s'appellent tes fichier PHP et tpl ? Link to comment Share on other sites More sharing options...
grafifred Posted November 11, 2012 Share Posted November 11, 2012 Mes fichiers s'appellent creation-form2.php etcreation-form2.tpl Link to comment Share on other sites More sharing options...
franckm1000 Posted November 12, 2012 Share Posted November 12, 2012 Après $message=Tools::getValue('message'); Ajoutes: echo $bateau;echo $message; Lorsque tu valides ton formulaire (en ayant bien sûr rempli bateau et message) il doit afficher les résultats au chargement de la page. Link to comment Share on other sites More sharing options...
grafifred Posted November 12, 2012 Share Posted November 12, 2012 Bonjour, J'ai bien le nom du bateau, le message et votre message a bien été envoyé qui s'affiche, mais en plus du formulaire qui reste. Link to comment Share on other sites More sharing options...
franckm1000 Posted November 12, 2012 Share Posted November 12, 2012 (edited) Quand je te demande de mettre ça, c'est pour bien vérifier que le formulaire est bien récupéré. Cela veut dire donc que tu récupères bien les infos. Tu as bien changé $monmail en mettant ton mail ? Bon allez on va essayer d'améliorer ton truc. Suis bien ce que je dis de faire... 1. Dans le fichier PHP, supprimes la partie suivante: $monmail="[email protected]"; $headers= "MIME-version: 1.0\n"; $headers.= "Content-type: text/html; charset=utf-8\n"; $headers.="From: [email protected]\n"; $texte="Mettre mon texte en style pour récupérer toutes mes variables.<br />Bateau:".$bateau."<br />Longueur:".$longueur."<br />Etc avec toutes les autres variables :".$nom." ".$prenom." ".$adresse." ".$telephone." ".$email." ".$message; mail($monmail,"contact depuis le formulaire",$texte,$header); A la place tu mets: global $cookie; $sujet = 'Envoi de mail depuis la page prestashop'; $donnees = array('{bateau}'=>$bateau,'{longueur}'=>$longueur,'{nom}'=>$nom,'{prenom}'=>$prenom,'{adresse}'=>$adresse,'{telephone}'=>$telephone,'{mail}'=>$mail,'{message}'=>$message, ); $destinataire = '[email protected]'; Mail::Send(intval($cookie->id_lang), 'mon_mail', $sujet , $donnees, $destinataire, NULL, NULL, NULL, NULL, NULL, 'mails/'); Tu changes bien le $destinataire en mettant ta véritable adresse mail où doit être envoyé le mail. 2.Ensuite, tu vas créer deux fichier distincts . Ces deux fichiers, tu vas les appeler mon-mail.txt (fichier texte) et mon_mail.html (fichier HTML). Pour le fichier mon_mail.txt tu mets la chose suivante: Bateau: {bateau} longueur:{longueur} nom:{nom} prénom:{prenom} adresse:{adresse} téléphone:{telephone} mail:{mail} message:{message} Pour le fichier mon_mail.html tu mets la chose suivante: Bateau: {bateau}<br /> longueur:{longueur}<br /> nom:{nom}<br /> prénom:{prenom}<br /> adresse:{adresse}<br /> téléphone:{telephone}<br /> mail:{mail}<br /> message:{message}<br /> 3. Tu enregistres ces deux messages dans le dossier mails/fr et pas ailleurs ! Tu as compris le système ? On récupère les valeurs du formulaire, on envoie via la méthode Send vers des templates que l'on a créé et on affiche les variables avec les {...} Tu peux ensuite mettre en forme le texte de ton mail comme tu le souhaites dans mon_mail.(txt+html). Il faut bien les deux pour que ça marche. Tu as également comprit que dans le fichier html tu peux ajouter une mise en style html. Normalement, ça doit marcher. Si ça ne marche pas, c'est que tu as fait quelque chose de façon incorrecte. Edited November 12, 2012 by franckm1000 (see edit history) Link to comment Share on other sites More sharing options...
grafifred Posted November 12, 2012 Share Posted November 12, 2012 Merci, Merci, Merci En effet ça marche nickel, je vais essayer de rajouter du javascript pour mes champs obligatoires. par contre je ne récupère pas la pièce jointe envoyé par mes clients. Merci encore Link to comment Share on other sites More sharing options...
franckm1000 Posted November 12, 2012 Share Posted November 12, 2012 Avant de recopier sans comprendre, regardes le code que je t'ai donné. Je n'envoie à aucun moment ton fichier joint. L'envoi de pièce jointe par mail est tout sauf une partie de plaisir. Je ne sais pas si la méthode send permet de le faire. A toi de chercher un peu sur google pour voir un peu comment faire. Link to comment Share on other sites More sharing options...
skoufix Posted June 10, 2013 Share Posted June 10, 2013 Avant de recopier sans comprendre, regardes le code que je t'ai donné. Je n'envoie à aucun moment ton fichier joint. L'envoi de pièce jointe par mail est tout sauf une partie de plaisir. Je ne sais pas si la méthode send permet de le faire. A toi de chercher un peu sur google pour voir un peu comment faire. Bonjour Franckm, Merci de vos contributions sur ce forum! Pourriez-vous m'aider avec un petit problème? Il me faudrait rajouter un ou plusieurs champs durant le checkout (order-address.tpl) comme $message et que je puisse récuperer les données dans email alert (comme on le fait en rajoutant $message). Je sais comment rajouter les champs en html dans le textarea mais pas comment crée un champs qui serait rajouter dans la base de données. Merci pour votre temps. 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