Le 05/01/2017 à 09:59, triton a écrit :
Bonjour,
sachant qu il n est pas totalement impossible que je m y prenne comme un
gros manche, mais pour ma part, et depuis longtemps et jusqu a 3.1.0 si
j'utilise un champ de saisie date (directement ou avec l interface
champs extra) il est impossible de valider la saisie du formulaire, le
format de date etant toujours considéré comme incorrect par la fonction
_verif
C est un vieux sujet, c'est bizarre que cela ne soit pas corrigé depuis
le temps, aussi me demande si c'est pas moi qui beugue...
Pour ce point précis lorsque le JS d'un champ date est utilisé, il faut modifier le champ posté dans la fonction verifier() du formulaire CVT pour l'adapter à ce qu'attend le champ date en question dans la base de données.
Pour ce faire la solution actuelle est de "normaliser" le champ reçu en utilisant le plugin Verifier, qui a une méthode pour cela.
Lorsqu'on crée un Champ Extras de date, il fait automatiquement cela (pour peu que le plugin Vérifier soit présent). De même avec la Fabrique, qui génère le code également pour les saisies de dates.
Ça peut ressembler à :
function formulaires_xxx_verifier_dist($id_xxx){
$erreurs = array();
// [...]
$verifier = charger_fonction('verifier', 'inc');
foreach (array('date_parution', 'date_modif_manuelle', 'date_debut') AS $champ) {
$normaliser = null;
if ($erreur = $verifier(_request($champ), 'date', array('normaliser'=>'datetime'), $normaliser)) {
$erreurs[$champ] = $erreur;
// si une valeur de normalisation a ete transmis, la prendre.
} elseif (!is_null($normaliser)) {
set_request($champ, $normaliser);
// si pas de normalisation ET pas de date soumise, il ne faut pas tenter d'enregistrer ''
} elseif (!is_null(_request($champ))) {
set_request($champ, '0000-00-00 00:00:00');
} else {
set_request($champ, null);
}
}
// Si c'est un objet éditorial connu, on peut utiliser la fonction générique de vérification
$erreurs += formulaires_editer_objet_verifier('xxx', $id_xxx, array('titre'));
return $erreurs;
}
MM.