Jump to content

[RESOLU] Confirmation de l'email dans le formulaire d'inscription Prestshop 1.7


Recommended Posts

Merci, effectivement c'est exactement ça...

j'ai bien compris qu'il fallait appeller le hook hookAdditionalCustomerFormFields dans un module...

mais lequel ? celui de la création du formulaire ? je ne le trouve pas...

Link to comment
Share on other sites

Il y a 21 heures, defaliz a dit :

mais lequel ? celui de la création du formulaire ? je ne le trouve pas...

Il faut développer un module pour intégrer ce que vous voulez.

Des exemples de modules sont fournis dans la documentation.

Link to comment
Share on other sites

Merci,

donc faut que je me mette à la création de module...

est-ce que dans les autres versions de prestashop il y a la confirmation d'email à l'inscription ?

c'est une fonction très utilisée partout où il y a necessité de s'inscrire...

 

Link to comment
Share on other sites

bonjour

j'ai enfin créé mon module pour ajouter la confirmation de l'email

on peut le voir ici sur un serveur de test https://presta2.dequ6178.odns.fr/fr/connexion?create_account=1

mail le nouveau champ email2 apparait tout en bas et je ne sais pas comment le remonter sous le 1er email...

avez-vous une idée ?

merci

voici le code

<?php
if (!defined('_PS_VERSION_')) {
    exit;
}

class SecondEmail extends Module
{
    public function __construct()
    {
        $this->name = 'secondemail';
        $this->tab = 'front_office_features';
        $this->version = '1.0.0';
        $this->author = 'xxxx';
        $this->need_instance = 0;
        $this->bootstrap = true;

        parent::__construct();

        $this->displayName = $this->l('Second Email Field');
        $this->description = $this->l('Ajoute un champ de confirmation email au formulaire d\'inscription');
    }

    public function install()
    {
        return parent::install()
            && $this->registerHook('additionalCustomerFormFields')
            && $this->registerHook('validateCustomerFormFields');
    }

    public function uninstall()
    {
        return parent::uninstall();
    }

    public function hookAdditionalCustomerFormFields($params)
    {
        return [
            (new FormField)
                ->setName('email2')
                ->setType('email')
                ->setRequired(true)
                ->setLabel($this->l('Confirmez votre email'))
                ->setMaxLength(255)
        ];
    }

    public function hookValidateCustomerFormFields($params)
    {
        // Debug dans un fichier
        file_put_contents(
            _PS_ROOT_DIR_ . '/debug_email.txt',
            date('Y-m-d H:i:s') . ' - Validation - POST: ' . print_r($_POST, true) . "\n",
            FILE_APPEND
        );

        foreach ($params['fields'] as $field) {
            if ($field->getName() === 'email2') {
                $email2 = $field->getValue();
                $email = Tools::getValue('email');

                if ($email !== $email2) {
                    $field->addError($this->l('Les deux adresses email doivent être identiques'));
                    return false;
                }
            }
        }
        return true;
    }
}

Link to comment
Share on other sites

bon

j'ai trouvé en modifiant customer-form.tpl comme suit :

<form action="{block name='customer_form_actionurl'}{$action}{/block}" id="customer-form" class="js-customer-form" method="post">
  <div>
    {block "form_fields"}
      {foreach from=$formFields item="field"}
        {block "form_field"}
          {if $field.name == 'email'}
            {form_field field=$field}
            {* On cherche et affiche email2 juste après email *}
            {foreach from=$formFields item="field2"}
              {if $field2.name == 'email2'}
                {form_field field=$field2}
              {/if}
            {/foreach}
          {elseif $field.name != 'email2'}
            {form_field field=$field}
          {/if}
        {/block}
      {/foreach}
      {$hook_create_account_form nofilter}
    {/block}
  </div>
  {block name='customer_form_footer'}
    <footer class="form-footer clearfix">
      <input type="hidden" name="submitCreate" value="1">
      {block "form_buttons"}
        <button class="btn btn-primary form-control-submit float-xs-right" data-link-action="save-customer" type="submit">
          {l s='Save' d='Shop.Theme.Actions'}
        </button>
      {/block}
    </footer>
  {/block}
</form>

Link to comment
Share on other sites

  • defaliz changed the title to [RESOLU] Confirmation de l'email dans le formulaire d'inscription Prestshop 1.7

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...