ascat Posted October 12, 2009 Share Posted October 12, 2009 Bonjour,J'ai ajouté des champs dans le formulaire de contact qui fonctionne bien, mais je voudrais que ces champs soit visible suivant le choix du contact dans la liste déroulante, j'ai essayé de faire cela : ............ {foreach from=$contacts item=contact} < id="desc_contact{$contact.id_contact|intval}" class="desc_contact" style="display:none;"> {$contact.description|escape:'htmlall':'UTF-8'} {/foreach} {if ($contact.id_contact == 3)} {l s='Type'} <input type="text" id="type" name="type" value="{if isset($smarty.post.type)}{$smarty.post.type}{/if}" /> {l s='Marque'} <input type="marque" id="type" name="marque" value="{if isset($smarty.post.marque)}{$smarty.post.marque}{/if}" /> {/if} mais cela ne fonctionne pas, je débute en php, merci de m'aider.SalutationsAlain Link to comment Share on other sites More sharing options...
ascat Posted October 18, 2009 Author Share Posted October 18, 2009 Bonjour,Je me répond car il personne pour m'aider (5 questions sans aucune réponse, je ne doit pas poser les bonnes questions!, mais l'avantage c'est que cela oblige à chercher et c'est comme cela que l'on progresse.)N'ayant pas réussi à résoudre mon problème, j'ai dupliqué le module contact-form.tpl que j'ai appelé contact-form-service.tpl cela fonctionne parfaitement, mais j'ai deux questions.J'ai modifier la boucle "foreach" pour sélectionner dans la liste déroulante les contacts comme ceci: {l s='-- Choose --'} {foreach from=$contacts item=contact name=foo} {if $smarty.foreach.foo.index > 1} {$contact.name|escape:'htmlall':'UTF-8'} {/if} {/foreach} ça fonctionne, mais pouvez-vous me dire si c'est la bonne solution.Vous pouvez voir le résultats ici : http://www.pmservice.fr/contact-form-service.phpJe voudrais rendre ces champs obligatoires, pouvez-vous me dire comment faire? quels fichiers sont concernés pour ces contrôles D'avance merci.Alain Link to comment Share on other sites More sharing options...
lionhell Posted October 20, 2009 Share Posted October 20, 2009 Salut !Je me frotte à ce problème depuis peu, car je n'y connais rien en matière de formulaires sur prestashop, et j'aimerais créer un formulaire, différencié du formulaire de base, que le visiteur pourrait choisir, dans lequel il y aurait des cases à cocher, etc ...Y a t'il un sujet ou une doc quelque part pour réaliser cela ? merci .... Link to comment Share on other sites More sharing options...
lionhell Posted October 20, 2009 Share Posted October 20, 2009 Je suis allé voir le résultat sur le lien que tu indiques, mais rien ne change selon le service que je choisis .... les champs restent les même !?D'autre part si je clique sur "contactez nous" en bas de page j'arrive sur le formulaire de base, et là aussi pas de changement ... Link to comment Share on other sites More sharing options...
ascat Posted October 20, 2009 Author Share Posted October 20, 2009 Bonsoir,Oui justement c'est le mon problème, c'est pour cela que pour le contourner j'ai crée un autre formulaire comme cela mes clients peuvent soit aller sur le formulaire contact de base pour les questions "Service client " ou webmaster" ou bien si ils désirent une demande "demande de pièce, devis ou schéma" liens en page d'accueil ils tombent sur le nouveau formulaire.Pour l'instant je ne suis arrivé qu'à filtrer ce qu'il y avait dans la liste déroulante objet.Je cherche pour filtrer et faire apparaitre des champs de saisie différents suivant le choix dans la liste objet. De l'aide serait la bien venue.Salutations Link to comment Share on other sites More sharing options...
ascat Posted October 20, 2009 Author Share Posted October 20, 2009 Bonsoir,J'ai trouvé!!!!!J'ai remplacé le code dans themes/pretashop/contact-form.tpl: {l s='Send a message'} {l s='Subject'} {l s='-- Choose --'} {foreach from=$contacts item=contact} {$contact.name|escape:'htmlall':'UTF-8'} {/foreach} {foreach from=$contacts item=contact} {$contact.description|escape:'htmlall':'UTF-8'} {/foreach} par {l s='Send a message'} {l s='Subject'} {l s='-- Choose --'} {foreach from=$contacts item=contact } {$contact.name|escape:'htmlall':'UTF-8'} {/foreach} {foreach from=$contacts item=contact} {$contact.description|escape:'htmlall':'UTF-8'} {if ($contact.id_contact == 3) or ($contact.id_contact == 4)} {l s='Type'} <input type="text" id="type" name="type" value="{if isset($smarty.post.type)}{$smarty.post.type}{/if}" /> {l s='Marque'} <input type="marque" id="type" name="marque" value="{if isset($smarty.post.marque)}{$smarty.post.marque}{/if}" /> {/if} {/foreach} le résultat ici :http://www.pmservice.fr/contact-form.php Link to comment Share on other sites More sharing options...
lionhell Posted October 20, 2009 Share Posted October 20, 2009 Moi j'étais parti dans une autre direction, tout marchait , formulaire dynamique ok, mais les champs conditionnels n'étaient pas transmis ....Je devais modifier themes/prestashop/contact-form.tpl et js/tools.jsJe pense que je n'étais pas loin de la solution, via autre voie. Mais je vais tester ta solution qui ne modifie qu'un fichier. Link to comment Share on other sites More sharing options...
lionhell Posted October 20, 2009 Share Posted October 20, 2009 Oui impeccable ça fonctionne !Juste un détail, quand on utilise un formulaire où les champs sont cachés, les labels correspondants sont quand même transmis (sans valeur bien sur) ...ex: j'ai fait un test avec un champs nom, sije choisis un objet où ce champs n'est pas affiché, le mail envoyé fait apparaitre le label: "nom:" sans rien derrière Link to comment Share on other sites More sharing options...
ascat Posted October 21, 2009 Author Share Posted October 21, 2009 Bonjour,Oui c'est vrai mais cela ne semble pas poser de problème, le prochain challenge c'est de rendre ces champs obligatoires quand ils sont affichés, c'est pas gagné, si tu a une idée...Salutations Link to comment Share on other sites More sharing options...
lionhell Posted October 21, 2009 Share Posted October 21, 2009 Nous suivons le même chemin ... je suis en train déplucher les posts sur le forum à ce sujet. Link to comment Share on other sites More sharing options...
lionhell Posted October 22, 2009 Share Posted October 22, 2009 Ca y est j'ai trouvé !!!Supposons que nous ayons créé un champs 'ville' dans le formulaire de contact ...Pour le rendre obligatoire il faut (légèrement) modifier les fichiers:1- tonsite/classes/Contact.php2- tonsite/contact-form.php1- Contact.php :Ajouter le nom du champs (en rouge) dans :protected $fieldsRequired = array('email','ville');protected $fieldsSize = array('email' => 128);protected $fieldsValidate = array('email' => 'isEmail');protected $fieldsRequiredLang = array('name');protected $fieldsSizeLang = array('name' => 32);protected $fieldsValidateLang = array('name' => 'isGenericName', 'description' => 'isCleanHtml');2- contact-form.php :Ajouter le test supplémentaire sur ce champs (en rouge) dans :if (Tools::isSubmit('submitMessage')){if (!($from = Tools::getValue('from')) OR !Validate::isEmail($from))$errors[] = Tools::displayError('invalid e-mail address');elseif (!($ville = Tools::getValue('ville'))) $errors[] = Tools::displayError('Vous devez préciser la ville');elseif (!($message = nl2br2(Tools::getValue('message'))))$errors[] = Tools::displayError('message cannot be blank');elseif (!Validate::isMessage($message))$errors[] = Tools::displayError('invalid message');elseif (!($id_contact = intval(Tools::getValue('id_contact'))) OR !(Validate::isLoadedObject($contact = new Contact(intval($id_contact), intval($cookie->id_lang)))))$errors[] = Tools::displayError('please select a contact in the list'); Link to comment Share on other sites More sharing options...
lionhell Posted October 22, 2009 Share Posted October 22, 2009 Ca fonctionne parfaitement, mais si plusieurs champs obligatoires sont vides, ils sont traités les uns après les autres et ne sont pas affichés simultanément .... amélioration possible. Link to comment Share on other sites More sharing options...
ascat Posted October 22, 2009 Author Share Posted October 22, 2009 Bonsoir,Ça fonctionne impeccablement, par contre ce qui me gène c'est que si le client oublie de remplir une case, cela efface les champs ajoutés et il est obligé de tout ressaisir, je vais essayer de chercher pour ouvrir une boite d'alerte uniquement. Bonne continuationCordialement Link to comment Share on other sites More sharing options...
lionhell Posted October 29, 2009 Share Posted October 29, 2009 Je viens de découvrir un problème que je pense lié à ces champs supplémentaires ....J'ai voulu modifier l'email d'un contact via BO/Employés/Contacts.Le formulaire d'édition est le formulaire standard (nom, mail, description), mais lorsque j'ai voulu faire 'Enregistrer' j'ai reçu un message d'erreur me disant que des champs (que j'avais ajoutés dans le formulaire de contact du FO, et rendus obligatoires) étaient requis !Apparemment les fichiers destinés à la création/édition des contacts sont les mêmes que ceux destinés à envoyer des messages à ces contacts !Que faire ?? Link to comment Share on other sites More sharing options...
lionhell Posted October 29, 2009 Share Posted October 29, 2009 Du coup je m'aperçois qu'il y a un autre problème !!!J'ai créé plusieurs contacts, et dans contactez nous j'ai créé des champs qui s'affichent ou non selon le contact auquel on écrit ....Mais ... les champs que j'ai rendus obligatoires le sont pour tous les contacts ! Même s'ils ne sont pas affichés ... Une solution ???? Link to comment Share on other sites More sharing options...
ascat Posted October 29, 2009 Author Share Posted October 29, 2009 Bonjour,Oui j'ai résolu le problème, je vous indique cela ce soir Link to comment Share on other sites More sharing options...
lionhell Posted October 29, 2009 Share Posted October 29, 2009 Super ! Merci .... à ce soir !! Link to comment Share on other sites More sharing options...
ascat Posted October 29, 2009 Author Share Posted October 29, 2009 Bon voila comment j'ai résolu le problème,Dans - tonsite/contact-form.php if (Tools::isSubmit('submitMessage')) { if (!($from = Tools::getValue('from')) OR !Validate::isEmail($from)) $errors[] = Tools::displayError('invalid e-mail address'); //Contrôle formulaire champs demande de schéma ou demande de devis elseif (!($type_devis = Tools::getValue('type_devis')) && (intval(Tools::getValue('id_contact')) == 3)) $errors[] = Tools::displayError('Vous devez préciser le type de votre appareil.'); elseif (!($marque_devis = Tools::getValue('marque_devis')) && (intval(Tools::getValue('id_contact')) == 3)) $errors[] = Tools::displayError('Vous devez préciser la marque de votre appareil.'); //Fin du contrôle formulaire champs demande de schéma ou demande de devis Tu remplace 'type_devis' et 'marque_devis' par le nom de tes champs.Bon codeSalutationsAlain Link to comment Share on other sites More sharing options...
ascat Posted October 29, 2009 Author Share Posted October 29, 2009 Pour ton problème pour ajouter tes contacts dans BO/Employés/Contacts.modifie le fichier tonsite/classes/Contact.php Ca y est j’ai trouvé !!!Supposons que nous ayons créé un champs ‘ville’ dans le formulaire de contact …Pour le rendre obligatoire il faut (légèrement) modifier les fichiers:1- tonsite/classes/Contact.php2- tonsite/contact-form.php1- Contact.php :Ajouter le nom du champs (en rouge) dans :protected $fieldsRequired = array(‘email’,‘ville’);protected $fieldsSize = array(‘email’ => 128);protected $fieldsValidate = array(‘email’ => ‘isEmail’);protected $fieldsRequiredLang = array(‘name’);protected $fieldsSizeLang = array(‘name’ => 32);protected $fieldsValidateLang = array(‘name’ => ‘isGenericName’, ‘description’ => ‘isCleanHtml’); Tu supprime ce que tu a ajouté 'ville' ce qui donne : protected $fieldsRequired = array('email'); et la tout fonctionne A+Alain Link to comment Share on other sites More sharing options...
lionhell Posted October 29, 2009 Share Posted October 29, 2009 Tout fonctionne ! Extra ! Merci .... Link to comment Share on other sites More sharing options...
marc04 Posted November 9, 2009 Share Posted November 9, 2009 Bonjour Beginner,Moi aussi je suis débutant mais alors vraiment débutant ! Je ne parviens pas à trouver le fichier dans lequel je sais aller modifier "Service client" et Webmaster". Merci de m'aider s'il vous plaît.marc04 Link to comment Share on other sites More sharing options...
marc04 Posted November 9, 2009 Share Posted November 9, 2009 En cherchant j'ai trouvé. Désolé de vous avoir posé cette question.marc04 Link to comment Share on other sites More sharing options...
ascat Posted November 9, 2009 Author Share Posted November 9, 2009 Bonsoir,Ne soyez pas désolé, si, avec mes faibles connaissances je peux vous aider, ce seras avec plaisirCordialement Link to comment Share on other sites More sharing options...
marc04 Posted November 9, 2009 Share Posted November 9, 2009 C'est vraiment TRES gentil de votre part.Merci et bonne soirée,marc04 Link to comment Share on other sites More sharing options...
samsab Posted January 19, 2010 Share Posted January 19, 2010 hellopeut on faire un petit résumé des modifs à appliquer pour arriver au résultat.j'ai peur d'en faire trop, ou pas assez.Merci pour vos réponses.A+ Link to comment Share on other sites More sharing options...
ascat Posted January 20, 2010 Author Share Posted January 20, 2010 Bonsoir,Je vais te faire un petit résuméDans themes/pretashop/contact-form.tpl: tu recherche ceci : {l s='Send a message'} {l s='Subject'} {l s='-- Choose --'} {foreach from=$contacts item=contact} {$contact.name|escape:'htmlall':'UTF-8'} {/foreach} {foreach from=$contacts item=contact} {$contact.description|escape:'htmlall':'UTF-8'} {/foreach} que tu remplace par cela: {l s='Send a message'} {l s='Subject'} {l s='-- Choose --'} {foreach from=$contacts item=contact } {$contact.name|escape:'htmlall':'UTF-8'} {/foreach} {foreach from=$contacts item=contact} {$contact.description|escape:'htmlall':'UTF-8'} {if ($contact.id_contact == 3) or ($contact.id_contact == 4)} {l s='Type'} <input type="text" id="type" name="type" value="{if isset($smarty.post.type)}{$smarty.post.type}{/if}" /> {l s='Marque'} <input type="marque" id="type" name="marque" value="{if isset($smarty.post.marque)}{$smarty.post.marque}{/if}" /> {/if} {/foreach} Les champs que j'ai ajoutés sont "marque" et "type" toi tu met les noms que tu veuxEt pour les rendre obligatoiresDans – tonsite/contact-form.phptu ajoute if (Tools::isSubmit('submitMessage')) { if (!($from = Tools::getValue('from')) OR !Validate::isEmail($from)) $errors[] = Tools::displayError('invalid e-mail address'); //Contrôle formulaire champs demande de schéma ou demande de devis elseif (!($type_devis = Tools::getValue('type_devis')) && (intval(Tools::getValue('id_contact')) == 3)) $errors[] = Tools::displayError('Vous devez préciser le type de votre appareil.'); elseif (!($marque_devis = Tools::getValue('marque_devis')) && (intval(Tools::getValue('id_contact')) == 3)) $errors[] = Tools::displayError('Vous devez préciser la marque de votre appareil.'); //Fin du contrôle formulaire champs demande de schéma ou demande de devis En remplaçant "marque_devis" et "type_devis" par les noms que tu a choisis plus hautVoila, bon courageAlain Link to comment Share on other sites More sharing options...
samsab Posted January 21, 2010 Share Posted January 21, 2010 super sympa de ta part.j'essaie!A+ Link to comment Share on other sites More sharing options...
samsab Posted January 21, 2010 Share Posted January 21, 2010 helloes tu certain de tes modifs?je n'ai pas l'impression que ça roule sous PS1.25A te lireA+par ailleurs comment as tu fait ton menu horizontal?...... Link to comment Share on other sites More sharing options...
fab4_33 Posted July 1, 2010 Share Posted July 1, 2010 helloidem pas réussi à le faire fonctionner sur ps1,2,5 Link to comment Share on other sites More sharing options...
birguiou Posted August 11, 2010 Share Posted August 11, 2010 J'ai suivi l'explication et mon formulaire est en double. Avez vous une idée de l'erreur que j'ai pu faire ? Merci 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