{"id":1132,"date":"2015-09-25T13:49:55","date_gmt":"2015-09-25T11:49:55","guid":{"rendered":"http:\/\/www.h-hennes.fr\/blog\/?p=1132"},"modified":"2015-09-25T13:49:55","modified_gmt":"2015-09-25T11:49:55","slug":"magento-ajouter-un-champ-de-confirmation-demail-sur-les-formulaires-dinscription","status":"publish","type":"post","link":"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/25\/magento-ajouter-un-champ-de-confirmation-demail-sur-les-formulaires-dinscription\/","title":{"rendered":"Magento : Ajouter un champ de confirmation d&#8217;email sur les formulaires d&rsquo;inscription"},"content":{"rendered":"<p>Afin de vous mettre \u00e0 l&rsquo;abri des erreurs de saisies d&#8217;email lors de la cr\u00e9ation de compte sur Magento et des ses multiples effets de bords ( Emails et informations perdus, r\u00e9assurance et exp\u00e9rience client m\u00e9diocre &#8230; ) voici comment mettre en place une solution rapide sur vos formulaires de cr\u00e9ation de compte.<\/p>\n<p>Le principe est relativement simple, nous allons rajouter un nouveau champ \u00ab\u00a0Confirmation email\u00a0\u00bb\u00a0 dans lequel l&rsquo;utilisateur devra saisir \u00e0 nouveau son adresse email.<br \/>\nLes 2 saisies de l&#8217;email permettent d\u00e9j\u00e0 de r\u00e9duire consid\u00e9rablement les erreurs de frappe.<\/p>\n<p><em>Ce tutoriel est r\u00e9alis\u00e9 sur la version 1.9.2 de Magento avec le th\u00e8me rwd en base.<\/em><\/p>\n<p><strong>Modification des templates<\/strong><\/p>\n<p>Pour commencer il va falloir dupliquer les fichiers suivants contenant les formulaires de cr\u00e9ation de compte.<br \/>\nDu th\u00e8me rwd : app\/design\/frontend\/<em>rwd<\/em>\/default\/template\/ dans votre th\u00e8me app\/design\/frontend\/<em>yourtheme<\/em>\/default\/template\/<\/p>\n<ul>\n<li>persistent\/customer\/form\/register.phtml ( Cr\u00e9ation de compte standard )<\/li>\n<li>persistent\/checkout\/onepage\/billing.phtml ( Cr\u00e9ation de compte dans le checkout )<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Dans le fichier register.phtml rechercher le code suivant :<\/p>\n<pre lang=\"html\" escaped=\"true\">&lt;li&gt;\r\n&lt;label for=\"email_address\" class=\"required\"&gt;&lt;em&gt;*&lt;\/em&gt;&lt;?php echo $this-&gt;__('Email Address') ?&gt;&lt;\/label&gt;\r\n&lt;div class=\"input-box\"&gt;\r\n&lt;input type=\"email\" autocapitalize=\"off\" autocorrect=\"off\" spellcheck=\"false\" name=\"email\" id=\"email_address\" value=\"&lt;?php echo $this-&gt;escapeHtml($this-&gt;getFormData()-&gt;getEmail()) ?&gt;\" title=\"&lt;?php echo $this-&gt;quoteEscape($this-&gt;__('Email Address')) ?&gt;\" class=\"input-text validate-email required-entry\" \/&gt;\r\n&lt;\/div&gt;\r\n&lt;\/li&gt;\r\n<\/pre>\n<p>Puis ajouter \u00e0 la suite le code suivant, qui va rajouter un nouveau champ de v\u00e9rification email<br \/>\nNotez bien la classe\u00a0validate-confirm-email qui va correspondre \u00e0 la r\u00e8gle de validation que nous allons cr\u00e9er.<\/p>\n<pre lang=\"html\" escaped=\"true\">&lt;!-- Ajout d'un \u00e9l\u00e9ment du formulaire Email de confirmation --&gt;\r\n&lt;li&gt;\r\n &lt;label for=\"email_address_confirm\" class=\"required\"&gt;&lt;em&gt;*&lt;\/em&gt;&lt;?php echo $this-&gt;__('Email Address Confirmation') ?&gt;&lt;\/label&gt;\r\n &lt;div class=\"input-box\"&gt;\r\n  &lt;input type=\"email\" autocapitalize=\"off\" autocorrect=\"off\" spellcheck=\"false\" name=\"email_confirm\" id=\"email_address_confirm\" value=\"&lt;?php echo $this-&gt;escapeHtml($this-&gt;getFormData()-&gt;getEmail()) ?&gt;\" title=\"&lt;?php echo $this-&gt;quoteEscape($this-&gt;__('Confirm Email Address')) ?&gt;\" class=\"input-text validate-email required-entry validate-confirm-email\" \/&gt;\r\n &lt;\/div&gt;\r\n&lt;\/li&gt;\r\n&lt;!-- Fin Ajout d'un \u00e9l\u00e9ment du formulaire Email de confirmation --&gt;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Dans le fichier billing.phtml rechercher le code suivant :<\/p>\n<pre lang=\"html\" escaped=\"true\">&lt;?php if(!$this-&gt;isCustomerLoggedIn()): ?&gt;\r\n&lt;div class=\"field\"&gt;\r\n&lt;label for=\"billing:email\" class=\"required\"&gt;&lt;em&gt;*&lt;\/em&gt;&lt;?php echo $this-&gt;__('Email Address') ?&gt;&lt;\/label&gt;\r\n&lt;div class=\"input-box\"&gt;\r\n&lt;input type=\"email\" autocapitalize=\"off\" autocorrect=\"off\" spellcheck=\"false\" name=\"billing[email]\" id=\"billing:email\" value=\"&lt;?php echo $this-&gt;escapeHtml($this-&gt;getAddress()-&gt;getEmail()) ?&gt;\" title=\"&lt;?php echo $this-&gt;quoteEscape($this-&gt;__('Email Address')) ?&gt;\" class=\"input-text validate-email required-entry\" \/&gt;\r\n&lt;\/div&gt;\r\n&lt;\/div&gt;\r\n&lt;?php endif; ?&gt;\r\n<\/pre>\n<p>Et ajouter le code suivant avant le endif<\/p>\n<pre lang=\"html\" escaped=\"true\">&lt;div class=\"field\"&gt;\r\n&lt;label for=\"billing:email\" class=\"required\"&gt;&lt;em&gt;*&lt;\/em&gt;&lt;?php echo $this-&gt;__('Email Address Confirmation') ?&gt;&lt;\/label&gt;\r\n&lt;div class=\"input-box\"&gt;\r\n&lt;input type=\"email\" autocapitalize=\"off\" autocorrect=\"off\" spellcheck=\"false\" name=\"billing[email_confirmation]\" id=\"billing:email_confirmation\" value=\"&lt;?php echo $this-&gt;escapeHtml($this-&gt;getAddress()-&gt;getEmail()) ?&gt;\" title=\"&lt;?php echo $this-&gt;quoteEscape($this-&gt;__('Email Address')) ?&gt;\" class=\"input-text validate-email validate-confirm-email required-entry\" \/&gt;\r\n&lt;\/div&gt;\r\n&lt;\/div&gt;\r\n<\/pre>\n<p>Une fois ces codes ins\u00e9r\u00e9s, nous avons bien un nouveau champ \u00ab\u00a0Email Address Confirmation\u00a0\u00bb qui s&rsquo;affiche sur ces 2 formulaires.<\/p>\n<p><a href=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/checkout-email-conf.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1137\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/checkout-email-conf.jpg\" alt=\"Checkout email conf\" width=\"332\" height=\"416\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/checkout-email-conf.jpg 332w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/checkout-email-conf-239x300.jpg 239w\" sizes=\"auto, (max-width: 332px) 100vw, 332px\" \/><\/a> \u00a0<a href=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/register-email-conf.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1138\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/register-email-conf.jpg\" alt=\"register-email-conf\" width=\"322\" height=\"411\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/register-email-conf.jpg 506w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/register-email-conf-235x300.jpg 235w\" sizes=\"auto, (max-width: 322px) 100vw, 322px\" \/><\/a><\/p>\n<p><strong>Mise en place de la validation sp\u00e9cifique<\/strong><\/p>\n<p>Comme \u00e9voqu\u00e9 plus haut nous allons mettre en place une validation sp\u00e9cifique qui v\u00e9rifiera simplement que la valeur de notre champ \u00ab\u00a0Confirmation email\u00a0\u00bb est bien \u00e9gal \u00e0 celle du champ email.<\/p>\n<p>Pour la mise en place de cette validation plusieurs solutions sont possibles.<\/p>\n<ul>\n<li><em>Ajout de la validation directement dans le template<\/em><\/li>\n<\/ul>\n<p>Ce n&rsquo;est pas forcement la plus pratique car elle n\u00e9cessite d&rsquo;ajouter un code de v\u00e9rification\u00a0 sur chaque template.<br \/>\nCette possibilit\u00e9 existe c&rsquo;est pourquoi je la d\u00e9taille tout de m\u00eame \ud83d\ude42<\/p>\n<p>Dans le fichier register.phtml , rechercher le code :<\/p>\n<pre lang=\"js\" escaped=\"true\">var dataForm = new VarienForm('form-validate', true);\r\n<\/pre>\n<p>Et ajouter \u00e0 la suite :<\/p>\n<pre lang=\"javascript\" escaped=\"true\">Validation.add('validate-confirm-email', '&lt;?php echo $this-&gt;quoteEscape($this-&gt;__('Confirmation email doesn\\'t match'));?&gt;', function(v) {\r\n var email = $('email_address').value;\r\n return (email === v);\r\n});\r\n<\/pre>\n<p>Dans le fichier billing.phtml, rechercher le code<\/p>\n<pre lang=\"javascript\" escaped=\"true\">var billingForm = new VarienForm('co-billing-form');\r\n<\/pre>\n<p>Et ajouter \u00e0 la suite<\/p>\n<pre lang=\"javascript\" escaped=\"true\">Validation.add('validate-confirm-email', '&lt;?php echo $this-&gt;quoteEscape($this-&gt;__('Confirmation email doesn\\'t match'));?&gt;', function(v) {\r\n var email = $('billing:email').value;\r\n return (email === v);\r\n});\r\n<\/pre>\n<ul>\n<li><em>Ajout de la validation dans un fichier javascript du th\u00e8me<\/em><\/li>\n<\/ul>\n<p>C&rsquo;est la solution la plus portable, car cette v\u00e9rification sera disponible sur toutes les pages chargeant le fichier js, sans ajout de code suppl\u00e9mentaire.<br \/>\nNous allons cr\u00e9er un fichier \u00ab\u00a0validations.js\u00a0\u00bb dans le dossier javascript de notre th\u00e8me ( skin\/frontend\/yourtheme\/default\/js\/), ce fichier pourra \u00eatre r\u00e9utilis\u00e9 ult\u00e9rieurement pour ajouter d&rsquo;autres validations.<\/p>\n<pre lang=\"javascript\" escaped=\"true\">\/**\r\n* R\u00e8gles de validations sp\u00e9cifiques au th\u00e8me\r\n*\/\r\nValidation.addAllThese([\r\n\u00a0\u00a0\u00a0 ['validate-confirm-email', 'Confirmation email doesnt match', function(v) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if ( $('email_address'))\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 var email = $('email_address').value;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if ( $('billing:email'))\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 var email = $('billing:email').value;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return (email === v);}],\r\n]);\r\n<\/pre>\n<p>Nous allons ensuite rajouter automatiquement ce fichier js \u00e0 toutes les pages de notre site en ajoutant les lignes suivantes dans le fichier \u00ab\u00a0local.xml\u00a0\u00bb de votre th\u00e8me ( app\/design\/frontend\/yourtheme\/default\/layout\/local.xml<\/p>\n<pre lang=\"xml\" escaped=\"true\">&lt;default&gt;\r\n&lt;!-- Ajout d'un fichier js sp\u00e9cifique avec toutes les nouvelles validations --&gt;\r\n&lt;reference name=\"head\"&gt;\r\n &lt;action method=\"addItem\"&gt;\r\n  &lt;type&gt;skin_js&lt;\/type&gt;\r\n  &lt;name&gt;js\/validations.js&lt;\/name&gt;\r\n &lt;\/action&gt;\r\n&lt;\/reference&gt;\r\n&lt;\/default&gt;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>L&rsquo;inconv\u00e9nient de cette solution c&rsquo;est que le message d&rsquo;erreur n&rsquo;est pas traduisible directement.<br \/>\nIl sera n\u00e9cessaire d&rsquo;ajouter la traduction via un Translator.add dans un template, ou via un fichier jstranslator d&rsquo;un module.<\/p>\n<p>Une fois ces \u00e9l\u00e9ments mis en place notre message d&rsquo;erreur est maintenant en place.<\/p>\n<p><a href=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/confirmation-email.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1141\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/confirmation-email.jpg\" alt=\"Confirmation email\" width=\"396\" height=\"173\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/confirmation-email.jpg 396w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/confirmation-email-300x131.jpg 300w\" sizes=\"auto, (max-width: 396px) 100vw, 396px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Afin de vous mettre \u00e0 l&rsquo;abri des erreurs de saisies d&#8217;email lors de la cr\u00e9ation de compte sur Magento et des ses multiples effets de bords ( Emails et informations perdus, r\u00e9assurance et exp\u00e9rience client m\u00e9diocre &#8230; ) voici comment mettre en place une solution rapide sur vos formulaires de cr\u00e9ation de compte. Le principe [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[246],"tags":[383,382,329,150],"class_list":["post-1132","post","type-post","status-publish","format-standard","hentry","category-magento-2","tag-client","tag-customer","tag-email","tag-magento"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1132","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/comments?post=1132"}],"version-history":[{"count":7,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1132\/revisions"}],"predecessor-version":[{"id":1142,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1132\/revisions\/1142"}],"wp:attachment":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/media?parent=1132"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/categories?post=1132"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/tags?post=1132"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}