Après de longues et fastidieuses recherches, nous avons enfin trouvé l’origine des années de naissance dans le champ ‘company’ de la table ‘ps_address’.
En effet, un de nos clients se plaignait de synchronisation avec son ERP qui échouait à cause de valeurs invalides. Et cet ERP avait raison, car dans le champ société, Prestashop 1.7 transmettait une année de naissance.
Des recherches et des logs après, nous avons réussi à déterminer que l’autocomplétion du navigateur Chrome, remplissait automatiquement le champ du formulaire par une année de naissance saisie sur un précédent site et le client ne faisant pas forcément attention validait les informations pré-remplies.
Nous avons donc surchargé le fichier qui génère le formulaire de création de compte pour désactiver l’autocomplétion sur le champ société.
Voici le fichier à ajouter.
!! Attention de toujours faire une sauvegarde de vos fichiers avant de les modifier. !!
Si vous ne comprenez pas ce que vous faites, ne pas modifier votre fichier et demander à votre agence ou une agence de développement spécialisée dans Prestashop d’apporter ces modifications sur votre site Internet.
themes/xxxxxxxx/templates/_partials/form-fields.tpl
{** * 2007-2018 Pliciweb Solutions * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * @author Pliciweb Solutions <contact@pliciweb.com> * @copyright 2007-2018 Pliciweb Solutions * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of Pliciweb Solutions *}{extends file='parent:/_partials/form-fields.tpl'} {block name='form_field_item_other'} <input class="form-control" name="{$field.name}" type="{$field.type}" value="{$field.value}" {if isset($field.availableValues.placeholder)}placeholder="{$field.availableValues.placeholder}"{/if} {if $field.maxLength}maxlength="{$field.maxLength}"{/if} {if $field.required}required{/if} {if 'company' == $field.name}autocomplete="nope"{/if} {* @author : Pliciweb - To avoid autocompletion with year value *} > {if isset($field.availableValues.comment)} <span class="form-control-comment"> {$field.availableValues.comment} </span> {/if} {/block}
Et afin de nettoyer la base de données, voici les requêtes qui ont été jouées :
UPDATE ps_customer SET company = NULL WHERE company REGEXP '^[0-9]{4}$'; UPDATE ps_address SET company = NULL WHERE company REGEXP '^[0-9]{4}$'
Heuresement que j’ai commencé par chercher sur Google, sinon j’y serai encore… MERCI !
Mais a priori, remplacer autocomplete= »nope » par autocomplete= »off »
Pour prestashop 1.6:
ajouter autocomplete= »off » dans le champ input « compagny » du template « authentification.tpl » (vers la ligne 552 (2ème bloc {foreach from=$dlv_all_fields item=field_name} )
ce qui donne:
{foreach from=$dlv_all_fields item=field_name}
{if $field_name eq « company »}
{if !$b2b_enable}
{l s=’Company’}{if in_array($field_name, $required_fields)} *{/if}