Jump to content

Ajout de nouveaux champs à l'inscription [1.7.4.4]


Recommended Posts

Bonjour,

J'avais besoin de rajouter de nouveaux champs sur la page d'inscription. En cherchant un peu sur internet, j'ai trouvé ce tuto : 
https://prestapros.com/en/blog/additional-fields-for-registration-form-prestashop-1-7 
qui permet d'ajouter exactement les champs dont j'ai besoin. J'ai testé en local, j'ai testé en prod, tout fonctionne niquel.

J'ai également eu besoin d'ajouter un module supplémentaire pour gérer l'activation des utilisateurs au moment de l'inscription. J'ai pris celui ci, qui me semblait adapté, avec des templates de mail et tout. https://addons.prestashop.com/fr/gestion-clients/40697-customer-activation-private-shop.html

Je ne sais pas si l'installation du deuxième a fait sauter le fonctionnement du premier : tout ce que je sais, c'est qu'en local je n'ai pas le module et que les adresses s'enregistrent bien, tandis qu'en prod, le chemin d'inscription ne passe plus une condition. Voici mon override/controller/AuthController : 

if (Tools::isSubmit('submitCreate')) {
              $hookResult = array_reduce(
                  Hook::exec('actionSubmitAccountBefore', array(), null, true),
                  function ($carry, $item) {
                      return $carry && $item;
                  },
                  true
              );
              if ($hookResult && $register_form->submit()) {
                //address saving
                  $customer = new Customer();
                  $customer = $customer->getByEmail($register_form->getCustomer()->email);

                  $address = new Address(
                      null,
                      $this->context->language->id
                  );

                  $address->address1 = Tools::getValue('address1');
                  $address->postcode = Tools::getValue('postcode');
                  $address->city = Tools::getValue('city');
                  $address->phone = Tools::getValue('phone');
                  $address->id_country = Tools::getValue('country');

                  $address->firstname = $customer->firstname;
                  $address->lastname = $customer->lastname;
                  $address->id_customer = (int) $customer->id;

                  $address->id_state = 0;
                  $address->alias = $this->trans('My Address', [], 'Shop.Theme.Checkout');

                  if($address->save()){
                      $should_redirect = true;
                  } else {
                      $customer->delete();
                      $this->errors[] = $this->trans('Could not update your information, please check your data.', array(), 'Shop.Notifications.Error');
                      $this->redirectWithNotifications($this->getCurrentURL());
                  }
              }
          }

Le $hookResult me retourne bien true quand je teste la condition, mais pas le register_form->submit(); et du coup je ne rentre jamais dans le if pour enregistrer l'adresse. Les concepteurs du module m'ont bien dit qu'ils n'interagissaient pas avec les différents hooks ni l'override, donc que normalement il n'y a pas de cause à effet. Est-ce une configuration particulière qui fait ceci ? Avez-vous déjà eu ce problème ? Merci beaucoup.

 

EDIT : j'ai installé le module concerné pour être sûr et effectivement c'est une fois l'installation faite que ça ne fonctionne plus. Ca passe toujours dans le fichier d'override mais tout s'arrête ensuite.

Edited by ludojlm (see edit history)
Link to comment
Share on other sites

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...