Jump to content
jeanjack2016

Obligé Date de naissance a l'inscription 1.6

Recommended Posts

Bonjour ,

 

J'ai ajouté au fichier customer.php a la ligne 168 ( comme dit sur un autre sujet) :"            'birthday' =>                     array('type' => self::TYPE_DATE, 'validate' => 'isBirthDate', 'required' => true),"

 

Le probleme maintenant c'est que oui la date de naissance est devenue obligatoire mais meme quand j'insere une date de naissance sa me donne l'erreur :"

Il y a 1 erreur

  1. Anniversaire requis"

Quelqu'un pourrais m'aider ?

 

Merci d'avance

 

Share this post


Link to post
Share on other sites

Je viens de trouvé quelques chose qui marche :

 

 

Perso sous prestashop 1.5.4.1 j'ai trouvé une solution qui fonctionne :

Dans classes/validate.php, transformer ligne 483 : 

public static function isBirthDate($date)
    {
        if (empty($date) || $date == '0000-00-00')
            return true;

en

public static function isBirthDate($date)
    {
        if (empty($date) || $date == '0000-00-00')
            return false;  

ainsi ce champs de vient obligatoire. Reste à ajouter l'astérisque dans authentication.tpl : 

<p class="select required">
<span>{l s='Date of Birth'} <sup>*</sup></span>

Voilà.

Share this post


Link to post
Share on other sites

Bonjour,

 

J´ai trouvé une solution encore plus simple, fonctionne sur un prestashop en 1.6.0.9

 

Aller dans le fichier authentification.tpl dans le répertoire du thème.

 

Puis compléter ces lignes : <label>{l s='Date of Birth'}

 

En ajoutant juste à côté de : </label> <sup>*</sup></label>

 

Cela fait apparaître l´astérisque "Obligatoire" sans modifier le code dans le core.

 

:P

 

Cordialement.

 

Rectification : Il faut également modifier dans identity. tpl à partir de la ligne 87 comme ceci :

 

<div class="required form-group">
                    <label for="dateofbirth" class="required">
                        {l s='Date of Birth'}

Edited by shooping (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

Pour faire les choses proprement, il ne faut pas aller modifier les fichiers du core comme indiqué pour presta 1.5, car sinon dès que presta change de version, la modif est perdue.

Pour prestashop 1.6, il faut aller voir dans le dossier override/classes

--------------------------------------------

Si Validate.php existe déjà, alors à l'intérieur du code 

class Validate extends ValidateCore
{

}

Rajouter le code :

    public static function isBirthDate($date)
    {
        if (empty($date) || $date == '0000-00-00') {
            return false;
        }
        if (preg_match('/^([0-9]{4})-((?:0?[1-9])|(?:1[0-2]))-((?:0?[1-9])|(?:[1-2][0-9])|(?:3[01]))([0-9]{2}:[0-9]{2}:[0-9]{2})?$/', $date, $birth_date)) {
            if ($birth_date[1] > date('Y') && $birth_date[2] > date('m') && $birth_date[3] > date('d')
                || $birth_date[1] == date('Y') && $birth_date[2] == date('m') && $birth_date[3] > date('d')
                || $birth_date[1] == date('Y') && $birth_date[2] > date('m')) {
                return false;
            }
            return true;
        }
        return false;
    }    

 

------------------------------------------

Si Validate.php n'existe pas, alors le créer et mettre à l'intérieur le code suivant :

<?php

class Validate extends ValidateCore
{
    public static function isBirthDate($date)
    {
        if (empty($date) || $date == '0000-00-00') {
            return false;
        }
        if (preg_match('/^([0-9]{4})-((?:0?[1-9])|(?:1[0-2]))-((?:0?[1-9])|(?:[1-2][0-9])|(?:3[01]))([0-9]{2}:[0-9]{2}:[0-9]{2})?$/', $date, $birth_date)) {
            if ($birth_date[1] > date('Y') && $birth_date[2] > date('m') && $birth_date[3] > date('d')
                || $birth_date[1] == date('Y') && $birth_date[2] == date('m') && $birth_date[3] > date('d')
                || $birth_date[1] == date('Y') && $birth_date[2] > date('m')) {
                return false;
            }
            return true;
        }
        return false;
    }	
}

 

Ensuite, allez dans le dossier cache et supprimez le fichier class_index.php pour vider le cache et que la modification soit prise en compte.

Après ça, prestashop bloquera si la date est vide. Ensuite pour rajouter l'astérisque (c'est juste visuel mais ça n'a pas de fonction bloquante), rajoutez <sup>*</sup> à côté de {l s='Date of Birth'} dans le fichier themes/MONTHEME/authentication.tpl

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