Jump to content

Prestashop 1.7.7 Ajouter une adresse dans le formulaire d'inscription


Recommended Posts

Bonjour,

Je souhaites ajouter 4 champs à mon formulaire d'inscription pour créer un compte, j'ai donc ajouté les champs à mon fichier override/classes/CustomerFormatter.php de la façon suivante:

if (!$this->ask_for_new_password) {
            $format['phone'] = (new FormField)
                ->setName('phone')
                ->setLabel(
                    $this->translator->trans(
                        'Phone', [], 'Shop.Forms.Labels'
                    )
                )
                ->setMinLength(10)
                ->setMaxLength(10)
                ->setPattern('[0-9]{10}')
                ->setRequired(true);
            $format['address1'] = (new FormField)
                ->setName('address1')
                ->setLabel(
                    $this->translator->trans(
                        'Address', [], 'Shop.Forms.Labels'
                    )
                )
                ->setRequired(true);
            $format['postcode'] = (new FormField)
                ->setName('postcode')
                ->setLabel(
                    $this->translator->trans(
                        'Zip/Postal Code', [], 'Shop.Forms.Labels'
                    )
                )
                ->setMinLength(5)
                ->setMaxLength(5)
                ->setPattern('[0-9]{5}')
                ->setRequired(true);
            $format['city'] = (new FormField)
                ->setName('city')
                ->setLabel(
                    $this->translator->trans(
                        'City', [], 'Shop.Forms.Labels'
                    )
                )
                ->setRequired(true);
        }

J'ai également ajouté ceci à mon fichier override/classes/AuthController.php :

 

 if ($hookResult && $register_form->submit()) {
                    $customer = new Customer();
                    $customer = $customer->getByEmail($register_form->getCustomer()->email);

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

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

                    $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());
                    }

                }

Ceci marche trés bien lorsque je passe par Mon compte / Créer un compte et que je rempli mon formulaire, mon client est bien ajouté avec son adresse.

 

En revanche lorsque j'ajoute un produit dans mon panier et que je veux passer commande sans être identifié, cela me ramène sur mon formulaire, jusqu'ici tout est normal.

Je rempli donc la 1ère partie de mon formulaire "informations personnelles" qui comporte mes champs rajouté mais lorsque je clique sur continuer, cela m'ouvre la deuxième partie de mon formulaire ou je dois saisir encore une fois l'adresse alors que je l'ai déjà ajouté dans la première partie..

de plus celle-ci n'est pas enregistré en back-office, je suis obligé de remplir (en doublon) la deuxième partie "adresse" pour qu'elle soit prise en compte.

 

Merci d'avance à ceux qui auront une réponse à mon problème car d'autres topics éxiste à ce sujet mais aucun ne corrige ce problème à ma connaissance.

 

 

Edited by Piouk (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...