Back to top

Autore Topic: impedire prenotazioni inferiori alle 24 ore da chronoform  (Letto 2770 volte)

Offline La Freccia del Sud

  • Appassionato
  • ***
  • Post: 241
    • Mostra profilo
Ciao,
ho costruito un form con chronoform.
Funziona bene ma ho un problema da risolvere: poichè il form ha  un campo costituito da un calendario attraverso il quale l'utente deve scegliere la data di prenotazione e poichè la data di prenotazione non deve essere inferiore alle 24 ore ho bisogno di un sistema che quando l'utente prenota oggi per domani(cioè inderiore alla 24 ore) il sistema lo bloccji e gli impedisca di posratre a termine la prenotazione. Allo stesso tempo vorrei anche che non siano cliccabile e quindi sceglibili i giorni precedenti a quello attuale (questo per evitare prenotazioni retroattive che purtroppo credetemi avvengono::9.

Fatemi sapere.

Grazie 1000



Offline steganoga

  • Abituale
  • ****
  • Post: 1313
    • Mostra profilo
Re:impedire prenotazioni inferiori alle 24 ore da chronoform
« Risposta #1 il: 01 Giu 2015, 18:50:05 »
mi sembra una proposta di collaborazione o comunque di un lavoro che qualcuno dovrebbe fare al tuo posto, secondo me dovresti fare un annuncio
...sono dove non ti aspetti di trovarmi, mi alimento della tua supponenza e disseto la mia curiosità nel silenzio.
Non sono un nemico, considerami un ospite.

Offline La Freccia del Sud

  • Appassionato
  • ***
  • Post: 241
    • Mostra profilo
Re:impedire prenotazioni inferiori alle 24 ore da chronoform
« Risposta #2 il: 10 Giu 2015, 10:52:10 »
Ciao a tutti,
riprendo questa discussione aperta qualche giorno fa per integrarla e completarla.

Allo stato attuale io ho 2 form 1 in un sito 1 in un altro sviluppati con il componente "Chronoform" versione 5.
Ora..nel primo form (per prenotazione ristorante) l'utente che si collega per prenotare, nel calendario, non deve avere la possibilità di prenotare quando:

A - la prenotazione che vuole fare è inferiore alle 48/h (cioè se io mi metto a prenotare adesso non posso prenotare per stasera o per domani sera);

B- non deve poter scegliere date del passato(cioè se io mi metto a prenotare adesso non posso cliccare sulla data di ieri).


L'altro form invece che è un form per le prenotazioni in un hotel l'utente NON deve:

A - scegliere date del passato (cioè se io mi metto a prenotare adesso non posso cliccare sulla data di ieri).

B - non deve poter invertire le date di "arrivo/partenza". (cioè se mette data di arrivo 19 Luglio non può mettere come data di partenza il 1 Luglio..sembra strano ma questi errori purtroppo avvengono).

Tutto quì, devo poter fare queste modifiche nei 2 form di cui sopra.

Grazie


Offline steganoga

  • Abituale
  • ****
  • Post: 1313
    • Mostra profilo
Re:impedire prenotazioni inferiori alle 24 ore da chronoform
« Risposta #3 il: 10 Giu 2015, 20:34:57 »
devi lavorare con le validazioni dei campi.
non conosco cronoform ma dovrebbe esistere un validazione client e una server.
Per i tuoi problemi dovrebbe bastare quella client.

Nella validazione inserisci le condizioni che hai descritto usando però un linguaggio server (php) o client (js)
...sono dove non ti aspetti di trovarmi, mi alimento della tua supponenza e disseto la mia curiosità nel silenzio.
Non sono un nemico, considerami un ospite.


Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:impedire prenotazioni inferiori alle 24 ore da chronoform
« Risposta #5 il: 10 Giu 2015, 21:06:51 »
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:

Codice: [Seleziona]
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:

Citazione
<?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

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline La Freccia del Sud

  • Appassionato
  • ***
  • Post: 241
    • Mostra profilo
Re:impedire prenotazioni inferiori alle 24 ore da chronoform
« Risposta #6 il: 11 Giu 2015, 08:43:46 »
grazie ragazzi per le importanti indicazioni che mi avete fornito :) ;)

 



Web Design Bolzano Kreatif