![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 1 Dołączył: 13.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Chciałbym napisać nowy validator sprawdzający np. czy pierwsza litera wyrazu jest napisana wielką literą. Gdzie taką f. powinienem napisać. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Nie mogę znaleźć, a widziałem już coś przyzwoitego na ten temat.
Nic straconego, walidatory są proste. Jeśli to co w dokumentacji jest zawarte to za mało, to zajrzyj do wbudowanych walidatorów. Powinieneś dowiedzieć się tam wszystkiego. W metodzie configure oczywiście konfigurujesz (ustawiasz dostępne opcje i wiadomości), a metoda doClean zajmuje się już walidacją. W przypadku błędu rzucasz wyjątkiem z klasy sfValidatorError lub sfValidatorErrorSchema. To chyba wszystko co najważniejsze. Mam wrażenie, że na tym forum też już o tym było. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
O tym jak napisać walidator wspomniał już destroyerr, ja tylko dodam, że dobrze by było gdybyś odpowiednio przewidział miejsce zapisu nowego walidatora.
Jeżeli będzie on używany wyłącznie w obrębie jednego modułu to wrzucasz go do SF_ROOT/apps/APP/modules/MODULE/lib Jeżeli w obrębie jednej aplikacji do SF_ROOT/apps/APP/lib A jeżeli w obrębie całego projektu do SF_ROOT/lib Pamiętaj tylko by nie mieszać Twoich plików ze źródłami Symfony |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 22.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ja bym to zrobil tak:
Widziałem niedawno ogłoszenie o prace gdzie jako zadanie trzeba było walidować imię aby pierwsza litera była z dużej. Czy czasem nie aplikujesz do nich? (IMG:http://forum.php.pl/style_emoticons/default/aaevil.gif) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Dlaczego dziedziczysz po sfValidatorSchema. Wynikają z tego tylko dalsze błędy w kodzie. Zdecydowanie powinna być rozszerzana klasa sfValdiatorBase.
Cytat
Totalnie nie to miejsce, wspomniałem już wcześniej, że od tego jest metoda configure. Opcja throw_global_error wcale nie jest obsłużona. Cytat
A jeśli podam null w tym polu? to nadal nie będzie parametrów. Wywaliłbym ten wyjątek i skorzystał bym z opcji required. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 51 Dołączył: 4.02.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
A nie lepiej wykorzystać walidator symfony sfValidatorRegex z odpowiednim wyrażeniem regularnym?
Ten post edytował -=Peter=- 2.07.2009, 11:55:32 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi stricte o to sprawdzanie, to na pewno sfValidatorRegex jest lepszym rozwiązaniem, tym bardziej, że ten zaproponowany walidator nie sprawdza w ogóle czy to jest string.
Zastanawiałem się tylko jak wygląda sprawa wydajności z wyrażeniem regularnym. Jeśli to jest tylko jeden wyraz no to bez przesady, ale jeśli jest to tekst to lepiej wycinać pierwszą literę i dopiero sprawdzać, ale może też przesadzam. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 22.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Przyznaje się, można to rozwiązać prościej. Co do błędów to moim zamierzeniem było użycie tego walidatora jako PostValidator (dlatego ValidatorSchema nie Base). Wcześniej pole byłoby sprawdzone sfValidatorString. No ale racja nie jest to dobre rozwiązanie.
Jak widać to jest przypadek gdzie string miałby się składać z samych liter. A jaki wzorzec należałoby podać do sfValidatorRegex aby go użyć w tym przypadku? Ten post edytował m-naw 2.07.2009, 14:10:50 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 12:51 |