Jump to content

Edit History

Piouk

Piouk

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.

 

 

Piouk

Piouk

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

 

 

Piouk

Piouk

Bonjour,

Je souhaites ajouter 4 champs à mon formulaire d'inscription pour créer un compte, j'ai donc ajouté les champs à mon fichier 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 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 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.

 

 

×
×
  • Create New...