AMG13 Posted November 9, 2020 Share Posted November 9, 2020 Bonjour ! Complètement newbie en codage j'ai intégré les champs text Nom et Prénom (EN & FR) à mon formulaire de contact conformément à certains tutos. Par défaut lorsqu'on est connecté le champs email 'customer' est rempli qd customer est connecté. J'aimerai faire pareil avec les champs nom et prénom avec format text à respecter (je n'ai pas trouvé le tuto adéquate). Une aide pour le codage à intégrer au contactform.php ? au contactform.tpl ? au controllers ? Merci d'avance ! Link to comment Share on other sites More sharing options...
HeineFR Posted November 13, 2020 Share Posted November 13, 2020 Salut, La modification doit être effectuée dans le fichier tpl si c'ets bien dans celui-ci que tu as rajouté le champ en suivant tes tutos. Pour savoir quelle variable appeler rajoute simplement la ligne {debug} au milieu de ce fichier, vide le cache et va sur la page de contact. Tu vas ainsi obtenir une popup et dans celle-ci se trouvera toutes les variables disponibles pour smarty. Si ton site est en prod et que tu as un fort trafic sur cette page je te conseille de ne la faire afficher que pour ton adresse. 1 Link to comment Share on other sites More sharing options...
AMG13 Posted November 18, 2020 Author Share Posted November 18, 2020 Salut, Merci pour la procédure ! Je vais regarder cela de plus près. Link to comment Share on other sites More sharing options...
HeineFR Posted November 18, 2020 Share Posted November 18, 2020 Pour info, ce fichier TPL se trouve normalement dans le répertoire modules ps_contactinfo de ton theme Link to comment Share on other sites More sharing options...
AMG13 Posted November 18, 2020 Author Share Posted November 18, 2020 Oui merci ! j'ai overridé le fichier modifié mais le problème vient que dés que je rajoute des codes pour par exemple : - détection champs Nom vide --> message d'erreur, le formulaire ne s'affiche plus après upload des modifs... Je voulais juste pouvoir mettre détection auto du nom prénom sur le form pour éviter au client de les retaper. Le form détecte l'email via cookie, je n'ai pas trouvé le codage à faire pour détecter le nom et prénom du client connecté automatiquement.. Sinon le BO détecte bien les noms prénoms du client après envoi formulaire. Donc je pense que je vais laisser comme ça... Merci pour ton implication ! Link to comment Share on other sites More sharing options...
HeineFR Posted November 18, 2020 Share Posted November 18, 2020 Tu n'as pas besoin de t’embêter avec les cookies, la variable doit être visible dans la liste des variables Smarty, il te faut peut être vérifier si la variable $customer existe en faisant un isset d'abord car si elle est vide tu peux effectivement avoir une erreur. N'oublie pas d'activer le mode debug lors de tes test car cela pourrait aussi simplement venir d'une erreur syntaxique ;) Link to comment Share on other sites More sharing options...
HeineFR Posted November 18, 2020 Share Posted November 18, 2020 (edited) J'ai justement un page de debogage ouverte et je te confirme que tu as bien dedans les informations que tu souhaites, et ce sur l'intégralité du site : $customer Array (2) value => Array (29) lastname => "NOM" firstname => "Prenom" Tu dois donc pouvoir les utiliser en tant que valeur par défaut de ton champ en faisant en smarty: {if isset($customer) }{$customer.firstname}{/if} Edited November 18, 2020 by HeineFR (see edit history) Link to comment Share on other sites More sharing options...
AMG13 Posted November 18, 2020 Author Share Posted November 18, 2020 Ok ! Mais l'isset je l'intègre dans le contactform.tpl ? ou dans le php ? Link to comment Share on other sites More sharing options...
AMG13 Posted November 18, 2020 Author Share Posted November 18, 2020 ou dans les 2 ? Dans le tpl ça donnerait ça ? {if $customer.firstname} <div class="form-group row"> <label class="col-md-3 form-control-label">{l s='First name' d='Shop.Forms.Labels'}</label> <div class="col-md-6"> <input class="form-control" name="firstname" type="text" value="{$contact.firstname}" placeholder="{l s='your first name' d='Shop.Forms.Help'}" > </div> </div> Link to comment Share on other sites More sharing options...
HeineFR Posted November 18, 2020 Share Posted November 18, 2020 (edited) On ne modifie que dans le tpl puisque c’est lui qui va gerer l'affichage de la page. Attention, a cause de ta première condition si il n’est pas connecté il ne pourra pas saisir son nom puisque le champ ne sera pas affiché. de plus je ne vois pas la fin de ton premier {if} <div class="form-group row"> <label class="col-md-3 form-control-label">{l s='First name' d='Shop.Forms.Labels'}</label> <div class="col-md-6"> <input class="form-control" name="firstname" type="text" value="{if isset($customer) }{$customer.firstname}{/if}" placeholder="{l s='your first name' d='Shop.Forms.Help'}" > </div> </div> Edited November 18, 2020 by HeineFR (see edit history) Link to comment Share on other sites More sharing options...
AMG13 Posted December 8, 2020 Author Share Posted December 8, 2020 Salut merci pour ton post ! désolé pour le retard... Je me suis servi de ton code pour faire ceci...et ça à l'air de marcher ?! <div class="form-group row"> <label class="col-md-3 form-control-label">{l s='Last name' d='Shop.Forms.Labels'}</label> <div class="col-md-6"> <input class="form-control" name="lastname" type="text" value="{$contact.lastname}{if isset($customer) }{$customer.lastname}{/if}" placeholder="{l s='your last name' d='Shop.Forms.Help'}" > </div> <span class="col-md-3 form-control-comment"> {l s='mandatory' d='Shop.Forms.Help'} </span> </div> Par contre coté BO je ne reçois pas le nom et prénom des champs créés dans le formulaire..je m'y penche en analysant le .php Encore merci ! Link to comment Share on other sites More sharing options...
HeineFR Posted December 8, 2020 Share Posted December 8, 2020 (edited) Attention ta condition n'est pas bonne : Il faut que ce soit : value="{if isset($customer) }{$customer.lastname}{/if}" Et pour qu'il y ait le nom ET le prénom de pré-rempli il faudrait : value="{if isset($customer) }{$customer.lastname} {$customer.firstname}{/if}" Edited December 8, 2020 by HeineFR (see edit history) Link to comment Share on other sites More sharing options...
AMG13 Posted December 8, 2020 Author Share Posted December 8, 2020 Ah oui ?! Je ne comprends pas alors... et si c'est un internaute pas client ? La valeur {$contact.lastname} sera t elle renvoyée qd même ? Link to comment Share on other sites More sharing options...
HeineFR Posted December 8, 2020 Share Posted December 8, 2020 Si c’est un simple visiteur la variable $customer ne sera pas initialisée (isset en php vérifie si elle est initialisée) donc le champ ne sera pas pré-rempli avec cette information la mais uniquement avec le placeholder qui s'efface lorsque l'on saisi, mais surtout le template ne fera pas appel à une variable inexistante. Link to comment Share on other sites More sharing options...
AMG13 Posted December 8, 2020 Author Share Posted December 8, 2020 ok ! logique...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