![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Witam,
mam drobne problem z rozkminieniem użycia walidatora daty. Otóż mam pole typu text, w którym wpisuję datę. Chciałbym aby: [*] data była w formacie Y-m-d [*] nie można było wpisać daty wcześniejszej niż 7 dni od dnia bieżącego [*] nie można było wpisać daty późniejszej niż 31 dni od dnia bieżącego Mam takie coś:
Sprawdzenie wymagalności oraz formatu działa bez zarzutu, natomiast jakiejkolwiek daty bym nie wpisał zawsze otrzymam komunikat o tym, że data jest za wczesna. Jak temu zaradzić? Co robię źle? I jeszcze przy okazji: jak sprawdzić czy wpisana data faktycznie istnieje? Rozumiem, że przy uruchomieniu 'min' oraz 'max' zostanie to automatycznie sprawdzone ale pytam z czystem ciekawości. Pozdrawiam, pion |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Aha.
Cytat [*] nie można było wpisać daty wcześniejszej niż 7 dni od dnia bieżącego [*] nie można było wpisać daty późniejszej niż 31 dni od dnia bieżącego trochę inaczej to zrozumiałem ale ok (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Nie napisałeś z jakiego widżetu korzystasz, a to dość ważne. Domyśliłem się dopiero teraz, że z sfWidgetFormInput. Ma to ogromne znaczenie. Twoje wyrażenie regularne jest jeszcze nie doskonałe, bo skąd walidator ma wiedzieć, na której pozycji jest rok, miesiąc lub dzień? Moim zdaniem tak jest poprawnie: Kod /^(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})$/ Teraz po wpisaniu np. 2008-09-40, będzie rzucał błędem invalid, a wartości dla min i max będą poprawnie sprawdzane. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 23:49 |