I am trying to check if the ending date precede the starting one.
I' used the hook like this:
function my_version_validation($field_data, $form_data) {
list($fields,$errors) = $field_data;
if ( 4 == $form_data['id'] ){
if (!empty( $fields['post_content'] ) && strlen($fields['post_content']['value']) > 350) {
$errors['post_content'] = 'Le contenu de ce champ est trop long '.strlen($fields['post_content']['value']);
}if ($fields['mettre-a-jour-mon-legue']['value'] !='1') {
$errors['mettre-a-jour-mon-legue'] = 'Vous devez accepter de mettre à jour ma fiche personnelle';
}
if ( empty($fields['post_content']['value']) || $fields['post_content']['value']=="" ) {
$errors['post_content']='Ce champs est obligatoire';
}
if (intval($fields['legue-date-de-fin1']['value']) < intval($fields['legue-date-de-debut1']['value'])) {
$errors['legue-date-de-fin1']='Date de fin antérieure à la date de début';
}
if (intval($fields['legue-date-de-fin2']['value']) < intval($fields['legue-date-de-debut2']['value'])) {
$errors['legue-date-de-fin2']='Date de fin antérieure à la date de début';
}
if (intval($fields['legue-date-de-fin3']['value']) < intval($fields['legue-date-de-debut3']['value'])) {
$errors['legue-date-de-fin3']='Date de fin antérieure à la date de début';
}
if (intval($fields['legue-date-de-fin4']['value']) < intval($fields['legue-date-de-debut4']['value'])) {
$errors['legue-date-de-fin4']='Date de fin antérieure à la date de début';
}
if (intval($fields['legue-date-de-fin4']['value']) < intval($fields['legue-date-de-debut4']['value'])) {
$errors['legue-date-de-fin4']='Date de fin antérieure à la date de début';
}
}
return array($fields, $errors);
}
tested both $fields['legue-date-de-debut1']['value'] and $fields['legue-date-de-debut1']
But not matter what I get null value for all the date fields.
The other validation work without problem.
Dear Jean,
Is the custom field "mettre-a-jour-mon-legue" created with Types plugin?
If it is, Types prepend "wpcf-" before the field slug, please try to modify your PHP codes to "wpcf-mettre-a-jour-mon-legue", and test again.
See the live example of our document:
cred_form_validate
https://toolset.com/documentation/user-guides/cred-api/#cfv
mettre-a-jour-mon-legue work as intented, my problem is with legue-date-de-fin1.
Same method, please try with slug "wpcf-legue-date-de-fin1"
Nope still getting null value
I just tested it in my localhost, for the custom date field which is created with Types plugin, you need to use it like this:
$fields['wpcf-legue-date-de-fin1']['value']['datepicker']
It is a timestamp value.
Ok validation seem to work but i can't display the error.
$errors['wpcf-legue-date-de-debut1']='Date de fin antérieure à la date de début';
won't work but
$errors['mettre-a-jour-mon-legue']='Date de fin antérieure à la date de début';
will display the error.
I can not duplicate same problem, since you did not paste the current codes, I tested with a simply one:
add_filter('cred_form_validate','my_version_validation',10,2);
function my_version_validation($field_data, $form_data) {
list($fields,$errors) = $field_data;
if ( 4 == $form_data['id'] ){
if (intval($fields['wpcf-legue-date-de-fin1']['value']['datepicker']) >0) {
$errors['legue-date-de-fin1']='Date de fin antérieure à la date de début';
}
}
return array($fields, $errors);
}
It does return an error message when you select a value in date field "wpcf-legue-date-de-fin1"
Please check this:
If you are going to compare two date field values, please make sure you are using same array type like this:
$fields['wpcf-legue-date-de-fin1']['value']['datepicker']
ok So i updated my $error field and date validation now work
thx
function my_version_validation($field_data, $form_data) {
list($fields,$errors) = $field_data;
if ( 4 == $form_data['id'] ){
if (!empty( $fields['post_content'] ) && strlen($fields['post_content']['value']) > 350) {
$errors['post_content'] = 'Le contenu de ce champ est trop long '.strlen($fields['post_content']['value']);
}
if ( empty($fields['post_content']['value']) || $fields['post_content']['value']=="" ) {
$errors['post_content']='Ce champs est obligatoire';
}
if (intval($fields['wpcf-legue-date-de-fin1']['value']['datepicker']) < intval($fields['wpcf-legue-date-de-debut1']['value']['datepicker'])) {
$errors['legue-date-de-debut1']='Date de fin antérieure à la date de début';
}
if (intval($fields['wpcf-legue-date-de-fin2']['value']['datepicker']) < intval($fields['wpcf-legue-date-de-debut2']['value']['datepicker'])) {
$errors['legue-date-de-fin2']='Date de fin antérieure à la date de début';
}
if (intval($fields['wpcf-legue-date-de-fin3']['value']['datepicker']) < intval($fields['wpcf-legue-date-de-debut3']['value']['datepicker'])) {
$errors['legue-date-de-fin3']='Date de fin antérieure à la date de début';
}
if (intval($fields['wpcf-legue-date-de-fin4']['value']['datepicker']) < intval($fields['wpcf-legue-date-de-debut4']['value']['datepicker'])) {
$errors['legue-date-de-fin4']='Date de fin antérieure à la date de début';
}
if (intval($fields['wpcf-legue-date-de-fin5']['value']['datepicker']) < intval($fields['wpcf-legue-date-de-debut5']['value']['datepicker'])) {
$errors['legue-date-de-fin4']='Date de fin antérieure à la date de début';
}
if (!$fields['mettre-a-jour-mon-legue']['value']) {
$errors['mettre-a-jour-mon-legue'] = 'Vous devez accepter de mettre à jour ma fiche personnelle';
}
}
return array($fields, $errors);
}