![]() |
![]() ![]() |
![]() |
![]()
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%) ![]() ![]() |
Przede wszystkim powinieneś raczej mieć strtotime('-1 week'). Powinno działać.
Jeśli chodzi o sprawdzanie daty, to masz na myśli to żeby ktoś nie wybrał 30 lutego? W takim razie to jest sprawdzane automatycznie, bez konieczności ustalania min i max. To wszystko można zobaczyć w kodzie ![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Dzięki za odpowiedź. Mam jednak dwie uwagi:
1. Powinno być raczej jak jest, czyli +1 week (chodzi o to aby nie wpisać daty wcześniejszej niż dziś + tydzień, np. mamy 2008-09-22 to najwcześniejsza możliwa data do wpisania to 2008-09-29). Niestety w takiej formie jak przedstawiłem w pierwszym poście kod nie działa (zawsze zwraca złą datę). 2. No właśnie tu też jest problem. Wpisując przykładowo 2008-09-40 (oraz komentując walidację 'min') wpis uważany jest za poprawny. Problem pewnie jest w postaci wprowadzanych danych ale niestety sam nie doszedłem do tego co może być źle :/ |
|
|
![]()
Post
#4
|
|
![]() 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 ![]() 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. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Tak, korzystam ze zwykłego inputa. Dzięki za sugestię, jutro sprawdzę czy Twój zabieg pomoże.
// Dziś: Twoja modyfikacja działa. Działa ale tylko na localu, a na serwerze docelowym wywala cały czas błąd formatu daty :/ Domyślam się, że problemem są te <year> bo po ich usunięciu walidacja na etapie formatu przechodzi pomyślnie. Na localu mam PHP 5.2.6, a na serwerze jest 5.1.6. Jednak z tego co wyczytałem: Cytat And first of all, the next version of symfony, the 1.1, released at the end of the Summer, will require at least PHP 5.1.0. więc teoretycznie wymagania są spełnione (a korzystam z S 1.1.2). Co w takiej sytuacji? :| pion |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Tak jest problem z tym, dziwię się, że nie dostałeś żadnego błędu. Sprawdziłem na tej samej wersji php co masz na serwerze i w takiej postaci działa:
Kod /^(?P<year>[0-9]{4})-(?P<month>[0-9]{2})-(?P<day>[0-9]{2})$/
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
W końcu działa! Dzięki serdeczne za pomoc
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.06.2025 - 20:05 |