tanto per cominciare devi impostare il range di date selezionabili dal datepicker, in modo che il cliente non possa scegliere una data antecedente al limite che hai imposto, al limite puoi anche inserire un valore limite per il futuro.
nel capo Extra Params del datepicker inserisci:
data-start_date=<?php $date = new DateTime(); $date->add(new DateInterval('P2D'));echo $date->format('d-m-Y'); ?>
data-end_date=<?php $date = new DateTime(); $date->add(new DateInterval('P30D'));echo $date->format('d-m-Y'); ?>
nota il DateInterval('P2D'): significa aggiungi 2 giorni, quello sotto, ne aggiunge trenta.
il questo modo è possibile selezionare selezionare un giorno compreso tra oggi + 2 e oggi + 30 giorni.
e questo risponde alla prima parte della domanda.
per quanto riguarda il controllo di data di inizio (StartDate) e fine (EndDate) prenotazione, la cosa è un poco fastidiosa, dato che il datepicker è uno dei pochi controlli che non supporta la custom validation.
si può però inserire un event switcher nell'onSubmit e controllare le due date con un codice come il seguente:
<?php
$sdate = DateTime::createFromFormat('d-m-Y', $form->data['StartDate']);
$edate = DateTime::createFromFormat('d-m-Y', $form->data['EndDate']);
if ( $sdate>=$edate ) {
$form->errors[] = 'le date non sono coerenti';
return 'fail';
}
return 'succes';
?>
lasciando i due eventi di default suggeriti da CF.
ti allego il backp di una form base con implementato quanto qui detto.
ciao,
marco