Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Zend_Form - jak dodać własnego errora ?
Forum PHP.pl > Forum > PHP > Frameworki
kosmowariat
Rozważmy przykładową sytuacje: mamy rejestrację użytkowników. W bazie mamy unique na emailu. Robimy formularz z walidacją. Użyszkodnik próbuje się zarejestrować, podał dane, walidacja powiodła się, ale stwierdziłem w wyniku dalszych działań że email istnieje już w bazie i trzeba wybrać inny. Teraz chciałbym żeby wyświetlić znowu formularz i dodać w nim odpowiednią informację (jako error pod polem z emailem). Problem mam już po części rozwiązany, aczkolwiek rozwiązanie to średnio mi się podoba. Z góry dzięki za podpowiedzi ;-)
Sabistik
W tym przypadku pasuje tu napisanie własnego walidatora.
kosmowariat
Dziękuję za odpowiedź, to jest właśnie to "moje rozwiązanie". Byłbym wdzięczny gdyby ktoś znał jakąś alternatywę dla tego rozwiązania ;]
pawella
A co konkretnie nie podoba ci się w tym "Twoim rozwiązaniu"


Jeżeli napisałeś własny validiator dziedzicząc po Zend_Validate_Abstract, to raczej prościej szybciej i wygodniej już nie można. :-)

Pozdrawiam pawella
Sabistik
No to możesz jeszcze użyć dekoratora 'Description' i po sprawdzeniu poprawności danych w formie, sprawdzać występowanie maila. W razie niepowodzenia dodawać odpowiednią informacje do description.
kosmowariat
Cytat(pawella @ 31.03.2008, 10:16:21 ) *
A co konkretnie nie podoba ci się w tym "Twoim rozwiązaniu"
Jeżeli napisałeś własny validiator dziedzicząc po Zend_Validate_Abstract, to raczej prościej szybciej i wygodniej już nie można. :-)

Pozdrawiam pawella


Nie wszystko można ładnie w ten sposób załatwić. Np, przy pisaniu logowania praktycznie całą logikę trzeba upchnąć w walidatorach, co wg mnie nie jest najpiękniejszym rozwiązaniem.
pawella
Nie wiem, może to głupia propozycja
a może trzeba by było stworzyć uniwersalny walidiator przyjmujący w opcja nazwę metody
statycznej user::exists() ktora w przypadku niepowodzenia zwraca kod błędu.

  1. <?php
  2. $formElement->addValidator('callClass',false,array('user::exists','user::costam'));
  3. ?>


A treść komunikatu załatwić Zend_Translate



Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.