Empfehlungen: Erweiterte Suche

Datumsfeld vorbelegen

Ausgabedaten formatieren und darstellen

Datumsfeld vorbelegen

Beitragvon getit » Do 26. Mär 2009, 13:14

Hallo,

ich möchte ein Datumsfeld vorbelegen.
datumsfeld.gif
datumsfeld.gif (1.53 KiB) 502-mal betrachtet


Normalerweise wird das ja mit dem heutigen Datum vorbelegt.
Ich möchte aber, da das Feld mit einem Wert aus der Datenbank vorbelegt ist.

Also zb. statt mit dem heutigen Tag soll das Feld mit dem 1.1.1950 initialisiert werden.

Doku und API helfen mir da nicht weiter.
Hat jemand eine Idee?
getit
 
Beiträge: 105
Registriert: Mo 22. Dez 2008, 13:06
CakePHP-Version: 1.2.1.8004
OS: Vista

Re: Datumsfeld vorbelegen

Beitragvon Mathias » Do 26. Mär 2009, 20:29

cheers
Benutzeravatar
Mathias
 
Beiträge: 225
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.3.x
OS: OS X 10.6.x

Re: Datumsfeld vorbelegen

Beitragvon getit » Fr 27. Mär 2009, 11:24

Danke.
Das hilft schon.
getit
 
Beiträge: 105
Registriert: Mo 22. Dez 2008, 13:06
CakePHP-Version: 1.2.1.8004
OS: Vista

Re: Datumsfeld vorbelegen

Beitragvon euromark » Fr 27. Mär 2009, 14:04

ich würds vom controller aus machen..

einfach

Code: Alles auswählen
if (empty($this->data)) {
$this->data['Model']['field'] = xyz;
}


am ende der methode (ist sauberer meiner meinung nach)
euromark
 
Beiträge: 644
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: Datumsfeld vorbelegen

Beitragvon Mathias » Fr 27. Mär 2009, 17:39

Warum ist das sauberer?
Immerhin haben die Entwickler genau für einen solchen Fall das Attribut da rein gepackt.

Eine Sache, die mich an deiner Methode stören würde, ist, dass $this->data nicht mehr leer ist, auch beim ersten Aufrufen des Formulars. Ich hab jetzt leider kein Beispiel, wo ich das gebrauchen könnte, aber trotzdem ;)
cheers
Benutzeravatar
Mathias
 
Beiträge: 225
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.3.x
OS: OS X 10.6.x

Re: Datumsfeld vorbelegen

Beitragvon euromark » So 29. Mär 2009, 15:57

weils für mich logik ist und in den controller gehört
gerade auch dann, wenn man über die parameter "passed", "named" evtl schon vorbelegungen möglich machen möchte
solche sachen sind ja dann auch im controller geregelt

Code: Alles auswählen
if (!empty(this->data)) {
    # process POST
} else {
    # vorbelegungen
}
euromark
 
Beiträge: 644
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: Datumsfeld vorbelegen

Beitragvon getit » Fr 29. Mai 2009, 21:11

Ich bin jetzt schon wieder auf das gleiche Problem gestoßen.

Also jetzt für alle die mit dem Firefox entwickeln die Lösung.

1. Man braucht einen String mit dem Datum
Code: Alles auswählen

$date = '2000-01-01',
 

nach dem Prinzip: YYYY-MM-DD

2. $form->input('fieldName', array('selected' => $date));

3. Man darf nicht den Fehler machen die Seite im Firefox nur neu zu laden (F5) sondern muss die Seite komplett neu laden (in der Adresszeile die URL erneut bestätigen).
Dann wird das Datumsfeld aktualiert.
(Drückt man nur F5 passiert garnix - jedenfalls nicht wenn man zuvor das Datumsfeld schon ohne 'selected' auf der Seite hatte)
getit
 
Beiträge: 105
Registriert: Mo 22. Dez 2008, 13:06
CakePHP-Version: 1.2.1.8004
OS: Vista

Re: Datumsfeld vorbelegen

Beitragvon euromark » Sa 30. Mai 2009, 09:39

mit "selected" ist es doch falsch
das ist wie bei normalen input feldern mit "value"

dadurch passiert dann, dass das datum, wenn das formular beim Posten einen Fehler verursacht,
einfach wieder auf diesen Wert resettet wird (jedes Mal)!
Das heißt, man kann den vorbelegten Wert nicht mehr korrekt ändern

Deshalb - wie ich oben erwähnt habe - im Controller machen (eben diesen "yyyy-mm-dd" string übergeben!):
$this->data[Model][feld] = "yyyy-mm-dd";
euromark
 
Beiträge: 644
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: Datumsfeld vorbelegen

Beitragvon Dogo » So 9. Aug 2009, 05:12

Für ein deutsches Datumsformat benutze ich folgenden Code und nicht $form->datetime():

Code: Alles auswählen
$form->input('start', array('label' => 'Startzeitpunkt', 'dateFormat' => 'DMY', 'timeFormat' => '24', 'minYear' => date('Y'), 'maxYear' => date('Y') + 1, 'separator' => '.'));

Das füllt sich automatisch mit dem in der Datenbank gespeicherten Wert. Wobei ich die minYear und maxYear einfach gesetzt habe, um das Dropdown auf "jetzt" und "nächstes Jahr" zu limitieren.

Wenn man nur das Datum verwendet, würde das so aussehen:
Code: Alles auswählen
$form->input('start', array('label' => 'Startzeitpunkt', 'dateFormat' => 'DMY', 'minYear' => date('Y'), 'maxYear' => date('Y') + 1, 'separator' => '.'));


Gruß,

Guido
Benutzeravatar
Dogo
 
Beiträge: 63
Registriert: Do 6. Aug 2009, 00:59
Wohnort: Wuppertal


Zurück zu Views

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast