Jump to content
Rimilama

Override une fonction déjà existante

Recommended Posts

Bonjour,

Je viens de découvrir l'override et j'ai choisi de fonctionner comme cela plutôt que de toucher au cœur de prestashop.
Malheureusement je n'arrive pas à faire fonctionner mon override et je ne comprends pas pourquoi.


L'override en question me sert à rajouter un champ e-mail et mot de passe dans le formulaire d'inscription afin de faire une vérification.
Je souhaite donc modifier les fonctions :

- getFormat() de la class CustomerFormatterCore :
Voilà ce que je compte rajouter

if ($this->ask_for_password) {
        	$format['email2'] = (new FormField())
	            ->setName('email2')
	            ->setType('email')
	            ->setLabel(
	                $this->translator->trans(
	                    'Confirmation e-mail', [], 'Shop.Forms.Labels'
	                )
	            )
	            ->setRequired(true)
	        ;

            $format['password2'] = (new FormField())
                ->setName('password2')
                ->setType('password')
                ->setLabel(
                    $this->translator->trans(
                        'Confirmation mot de passe', [], 'Shop.Forms.Labels'
                    )
                )
                ->setRequired($this->password_is_required)
            ;

  - validate() de la class CustomerFormCore :

Ici, j'ajoute la vérification.

if ($this->passwordRequired) {
            $emailField2 = $this->getField('email2');
            $emailValue2 = $emailField2->getValue();
            $mdpField = $this->getField('password');
            $mdpField2 = $this->getField('password2');
            $mdpValue = $mdpField->getValue();
            $mdpValue2 = $mdpField2->getValue();
            if ($emailValue != $emailValue2) {
                $emailField2->addError($this->translator->trans(
                    'Les adresses mail ne sont pas conforme', array(), 'Shop.Notifications.Error'
                ));
            }

            if ($mdpValue != $mdpValue2) {
                $mdpField2->addError($this->translator->trans(
                    'Les mots de passe ne sont pas conforme', array(), 'Shop.Notifications.Error'
                ));
            }
        }

 

 

Bien sûr, quand je mets ces bouts de codes dans les class au cœur de prestashop, les fonctionnalités fonctionnent.
Du moment où je mets ces ajouts dans des fichiers (Placer dans : \override\classes\form ) quand je vais sur la page de création de compte, j'ai juste une page blanche.

Je tourne en rond sur mes recherches et je ne trouve pas la solution ...
Merci à ceux qui prendrons la peine de lire et de répondre !

Ps : j'ai mis mes fichier override en "pièce jointe."

CustomerForm.php

CustomerFormatter.php

Share this post


Link to post
Share on other sites

Bonjour,

Si vous activez votre mode débug avez vous une erreur qui s'affiche?

Bien penser aussi à vider le class_index.php du dossier cache quand vous ajoutez un override.

Cordialement,

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More