1

Temat: walidacja daty urodzenia

hej,

mam pewien problem z ustawieniem walidacji daty urodzenia aby zachowywala sie tak jakbym chcial.

w widoku mam cos takiego:

<?php echo $form->day('birthdate', null, array(), 'wybierz...'); ?>
<?php echo $form->month('birthdate', null, array(), 'wybierz...'); ?>
<?php echo $form->year('birthdate', (date('Y')-100), date('Y'), null, array(), 'wybierz...'); ?>
<?php echo $form->error('birthdate'); ?>

teraz tak - podanie daty jest opcjonalne. czyli jak wszystie selecty sa "czyste" (w pozycji wybierz...) nie ma pojawiac sie zaden blad.
niemniej jednak jesli uzytkownik wybierze np jakis rok a pozostale selecty zostawi puste ma pojawic sie blad. dodatkowo jesli wszystkie pola sa wypelnione musi byc rowniez sprawdzenie wieku.

jak zrobie debug($this->data) w kontrolerze mam cos takiego (np w przypadku wypelnienia jednego selecta):

[birthdate] => Array
                (
                    [day] => 03
                    [month] => 
                    [year] => 
                )

a w modelu mam juz tylko

[birthdate] =>

wiec cake w ktoryms miejscu musi robic jakis merge tych danych z kontrolera. macie pojecie gdzie to sie dzieje?

pozdrawiam

2

Odp: walidacja daty urodzenia

hej, udalo mi sie znalezc rozwiazanie jak sprawdzic poszczegolne czesci daty. Po prostu w kontrolerze stworzylem 'tymczasowe' pole 'birthdate2' ktora bedzie trzymac polaczona date z selectow w formie stringa:


$this->data['User']['birthdate2'] = $this->data['User']['birthdate']['year'] . '-' . $this->data['ser']['birthdate']['month'] . '-' . $this->data['User']['birthdate']['day'];  
if ($this->data['User']['birthdate2'] == '--') $this->data['User']['birthdate2'] = ''; //wszystkie selecty puste

a pozniej w modelu podpialem pod pole birthdate2 cake`owa walidacje. Czyli stworzylem sobie tymczasowe pole ktorego nie ma w tabeli i podpialem pod to pole walidacje (fajna sprawa). A pozniej juz w widoku pod selectami wyswietlam po prostu $form->error('birthdate2') smile

pozdrawiam