Empfehlungen: Erweiterte Suche

Zeitangabe im Formular limitieren!

Ausgabedaten formatieren und darstellen

Zeitangabe im Formular limitieren!

Beitragvon sebbo.cake » Di 16. Aug 2011, 12:42

Hallo liebe Gemeinde,

kurz und schmerzlos folgendes Problem:

Im Formular kann man das Datum mit min / maxYaer ja limitieren, auch die Minuten sind mit "interval" irgendwie zu bearbeiten, aber wie zur Hölle kann ich die Stunden auf z.B. 6 bis 18 definieren, denn wer braucht bei einer Buchungsdatenbank oder ähnlichem schon Stundenangaben von 3 oder 4 Uhr... ? Achso, das Minutenfeld sollte davon aber unberührt bleiben, das mit dem Ihnterval 15 find ich schon cool!
sebbo.cake
 
Beiträge: 16
Registriert: Mi 11. Mai 2011, 13:31

Re: Zeitangabe im Formular limitieren!

Beitragvon mbrod » Di 16. Aug 2011, 15:06

Ich würde das Datum/Zeitfeld mit den Form-Element-Specific-Methods nachbauen.

Grober Vorschlag:
Code: Alles auswählen
echo $this->Form->label('booking_date');
echo $this->Form->year('booking_date',$minYear,$maxYear,null,array('empty'=>false));
echo $this->Form->month('booking_date',...
echo $this->Form->day(...
echo $this->Form->hour(...
echo $this->Form->minute(...
mbrod
 
Beiträge: 199
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: Zeitangabe im Formular limitieren!

Beitragvon sebbo.cake » Di 16. Aug 2011, 15:10

Cool, vielen Dank! Muss ich das dann im Controller noch DB-RDY machen/formatieren? Da das Datenbankfeld vom Typ Time ist...
sebbo.cake
 
Beiträge: 16
Registriert: Mi 11. Mai 2011, 13:31

Re: Zeitangabe im Formular limitieren!

Beitragvon mbrod » Di 16. Aug 2011, 15:20

Ich vermute mal, dass du jetzt im View "echo $this->Form->input('booking_date');" stehen hast. Statt input eben wie oben gezeigt hour und minute verwenden.
Im Controller muss nix geändert werden. Es geht ja nur um das View, dass halt der Benutzer eine vernünftige Auswahl angeboten bekommt.
mbrod
 
Beiträge: 199
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: Zeitangabe im Formular limitieren!

Beitragvon sebbo.cake » Di 16. Aug 2011, 15:43

Naja, aber kann ich denn das eine Zeitfeld aus dem Model in 2 Formularfelder splitten?
Und wenn ja, wie kann ich dann sagen, dass Form->hour nur nen Bereich von 6 bis 17 ausgibt?
sebbo.cake
 
Beiträge: 16
Registriert: Mi 11. Mai 2011, 13:31

Re: Zeitangabe im Formular limitieren!

Beitragvon euromark » Di 16. Aug 2011, 16:15

ich würd einfach 1 input feld nehmen, man dann dort auch minYear, maxYear einstellen (im parameter array)
niemals die short methods wenn man sie vermeiden kann - mein tipp
euromark
 
Beiträge: 644
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: Zeitangabe im Formular limitieren!

Beitragvon mbrod » Di 16. Aug 2011, 18:35

sebbo.cake hat geschrieben:Naja, aber kann ich denn das eine Zeitfeld aus dem Model in 2 Formularfelder splitten?

Es wird ja standardmäßig in die Selectboxen Stunde und Minute gesplittet.

Ich habe jetzt aber gesehen, dass es in der hour-Funktion doch keine Möglichkeit gibt ein Array mit den anzuzeigenden Stunden zu übergeben. Da muss man dann doch mit $this->Form->select arbeiten.

Vielleicht komme ich später dazu einen Codeschnipsel zu posten. Das Problem interessiert mich nämlich auch.
mbrod
 
Beiträge: 199
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: Zeitangabe im Formular limitieren!

Beitragvon euromark » Di 16. Aug 2011, 19:48

stimmt, stunden zu bestimmen ist bis dato wohl nich mit dem helper möglich
entweder du machst dir deinen eigenen dafür oder nutzt z.b. javascript um die falschen stunden auszublenden
da du eh im backend validieren musst, ist der overhead minimal.
natürlich kannst du auch n ticket aufmachen für die manuelle bestimmung der stunden mittels "hours" parameter.
evtl wirds ja sogar in 2.0 in den core kommen dann :)
euromark
 
Beiträge: 644
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: Zeitangabe im Formular limitieren!

Beitragvon mbrod » Di 16. Aug 2011, 23:31

Ausgehend von einem Model "Entry" und der Spalte "created" vom Typ DATETIME würde das übliche Formular so dargestellt:
Code: Alles auswählen
echo $this->Form->create('Entry');
echo $this->Form->input('created', array('dateFormat'=>'DMY','timeFormat'=>24));
echo $this->Form->end(__('Select',true));
 

Um nun nur die Stunden von 6 bis 20 Uhr anzuzeigen kann statt obigem folgendes benutzt werden:
Code: Alles auswählen
echo $this->Form->create('Entry');
echo $this->Form->label('created');
echo $this->Form->day('created',null,array('empty'=>false));
echo $this->Form->month('created',null,array('empty'=>false));
echo $this->Form->year('created',null,null,null,array('empty'=>false));
$options=array();
for($i=6;$i<21;$i++){
    $options[$i]=$i;
}
echo $this->Form->select('created.hour',$options,null,array('empty'=>false));
echo $this->Form->minute('created',null,array('empty'=>false,'interval'=>15));
echo $this->Form->end(__('Select',true));
 

Wäre ja schön, wenn man dann in 2.0 so schreiben könnte:
Code: Alles auswählen
echo $this->Form->create('Entry');
echo $this->Form->input('created', array('dateFormat'=>'DMY','timeFormat'=>24,'minHour'=>6,'maxHour'=>20));
echo $this->Form->end(__('Select',true));
 
:idea:
mbrod
 
Beiträge: 199
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: Zeitangabe im Formular limitieren!

Beitragvon sebbo.cake » Mi 17. Aug 2011, 12:07

Vielen Dank für die Antworten, hat mich ein gewaltiges Stück nach forn gebracht!
Ich finde aber die letzte Variante mit minHour und MaxHour auch wünschenswert für die Zukunft! ;)

-> mbrod, ich glaube wenn das durch geht in der nächsten Version wirst du Namentlich in die Geschichtsbücher eingehen! :D :D :D :D

Vielen Dank euch allen!
sebbo.cake
 
Beiträge: 16
Registriert: Mi 11. Mai 2011, 13:31

Nächste

Zurück zu Views

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron