Raph59 Posted October 9, 2012 Share Posted October 9, 2012 (edited) Bonjour, Je voulais faire quelque chose qui me semblais simple je l'avais fait sans trop de problème avec la 1.4 avec l'override, mais là avec la 1.5 je n'y arrive plus.. Mon souhait est que quand une personne est sur la page d'authentification (qui doit choisir si il doit s'inscrire ou s'authentifier), même si il n'a pas entré d'adresse email dans la case "Adresse email", que si il appui sur le bouton "Créez votre compte", qu'il soit tout de même dirigé vers la page d'inscription (c'est peut être ridicule, mais j'ai remarqué que le taux était un peu plus élevé). Donc je vais dans /override/controllers/front/AuthController.php et je créé la fonction suivante protected function processSubmitCreate() { //POUR EVITER D ENTRER OBLIGATOIREMENT EMAIL A ETAPE 1 $this->create_account = true; $this->context->smarty->assign('email_create', Tools::safeOutput($email)); $_POST['email'] = $email; } il faut savoir que dans la fonction d'origine, voilà ce qu'il y a protected function processSubmitCreate() { if (!Validate::isEmail($email = Tools::getValue('email_create')) || empty($email)) $this->errors[] = Tools::displayError('Invalid e-mail address'); elseif (Customer::customerExists($email)) { $this->errors[] = Tools::displayError('An account is already registered with this e-mail, please enter your password or request a new one.', false); $_POST['email'] = $_POST['email_create']; unset($_POST['email_create']); } else { $this->create_account = true; $this->context->smarty->assign('email_create', Tools::safeOutput($email)); $_POST['email'] = $email; } } Mais j'ai un message d'erreur TECHNICAL ERROR: unable to load form. Details: Error thrown: [object Object] Text status: parsererror même si je met une adresse email valide, j'ai le même message d'erreur... Je ne comprend pas pourquoi cela ne fonctionne pas... puisque je retire les vérifications et que je valide directement l'email? Merci! Raphael Edited October 9, 2012 by Raph59 (see edit history) Link to comment Share on other sites More sharing options...
Broceliande Posted October 9, 2012 Share Posted October 9, 2012 En fait tu ne valides rien du tout puisque tu fais un return , d'une part , qui n'est pas nécessaire, et que d'autre part tu assignes une chaine vide à la donnée POST 'email' : return $_POST['email'] = $email; A ce stade $email est vide puisque tu as supprimé purement et simplement ce qui renseignait $email . Link to comment Share on other sites More sharing options...
Raph59 Posted October 9, 2012 Author Share Posted October 9, 2012 Merci de ta réponse, Oula désolé le return était là en trop ... j'avais essayé car j'était désespéré Je viens d'éditer le message pour mettre vraiment ce que je met.. Mais en écrivant le message je viens de me rendre compte pourquoi ca ne fonctionne pas... je n'avais pas fait attention que dans les conditions on renseignais la variable $email je commence a être fatigué et je commence à manquer de patience je pense... je vais allez dodo et continuer demain Merci de ta réponse Link to comment Share on other sites More sharing options...
Raph59 Posted October 9, 2012 Author Share Posted October 9, 2012 Bon sinon je confirmes en effet cela fonctionne beaucoup mieux maintenant Une question, quelqu'un sais si il y a une variable global par exemple qui contient l'id_shop en cours? Pour par exemple si on souhaite qu'une modification en override soit effectué seulement sur la boutique avec l'id_shop == 1 Merci Link to comment Share on other sites More sharing options...
Broceliande Posted October 9, 2012 Share Posted October 9, 2012 bon je vais développer un tout petit peu plus quand même : Les tests que tu veux occulter permettent d'une part de vérifier si l'adresse mail existe avant d'essayer de la créer. L'adresse mail est une clé unique dans la table ps_customers ... De plus , sur la 1.5 , les formulaire chargé est chargé en ajax et l'adresse mail est bien sûr attendue dans ces données , donc tu ne peux te satisfaire de cette override , et tu devra aller plus loin , ne serait-ce que modifier le javascript qui récupère et affiche ces données, ou au pire les données elles mêmes . Supposons que tu y parviennes : alors le client devra finalement entrer son adresse mail dans le formulaire complet , qui retournera les mêmes erreurs lui, s'il entre une mauvaise adresse ou une adresse existante , sauf que cette fois le client aura rempli un formulaire complet pour arriver au même résultat. Le jeu en vaut-il la chandelle ? Link to comment Share on other sites More sharing options...
Raph59 Posted October 9, 2012 Author Share Posted October 9, 2012 Bonjour Broceliande, Je te remercie d'avoir développé ainsi ainsi que ta mise en garde Pour ne pas prendre de risque, voici ce que j'ai fait finalement protected function processSubmitCreate() { if (!Validate::isEmail($email = Tools::getValue('email_create')) || empty($email)) { $this->create_account = true; $this->context->smarty->assign('email_create', ''); $_POST['email'] = ''; } elseif (Customer::customerExists($email)) { $this->errors[] = Tools::displayError('An account is already registered with this e-mail, please enter your password or request a new one.', false); $_POST['email'] = $_POST['email_create']; unset($_POST['email_create']); } else { $this->create_account = true; $this->context->smarty->assign('email_create', Tools::safeOutput($email)); $_POST['email'] = $email; } } Encore merci Link to comment Share on other sites More sharing options...
Broceliande Posted October 9, 2012 Share Posted October 9, 2012 Bon sinon je confirmes en effet cela fonctionne beaucoup mieux maintenant Une question, quelqu'un sais si il y a une variable global par exemple qui contient l'id_shop en cours? Pour par exemple si on souhaite qu'une modification en override soit effectué seulement sur la boutique avec l'id_shop == 1 Merci la par contre pour une autre application bien sur mais tu dois avoir ça dans le contexte : $this->context->shop->id un truc comme ça ... Link to comment Share on other sites More sharing options...
Raph59 Posted October 10, 2012 Author Share Posted October 10, 2012 Je confirmes que c'est bien $this->context->shop->id Merci encore Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now