![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 0 Dołączył: 22.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam w jednym kontrolerze różne formularze. Każdy formularz ma akcję, która buduje formularz oraz akcję, która jest umieszczana w parametrze action formularza i zajmuje się przetworzeniem danych z formularza. Gdy zbudowanie formularza + walidacja + przetworzenie danych znajdowały się w jednym kontrolerze to walidacja formularza działała bez problemu, natomiast gdy rozdzieliłam budowe formularza i przetworzenie danych na osobne akcje, walidacja przestała działać. Dlaczego i jak zrobić żeby w ten sposób działała?
Mam mniejwięcej coś takiego: Inicjalizacja formularza w kontrolerze
zbudowanie formularza
action formularza:
Co trzeba zrobić aby walidacja zadziałała, albo chociaż żeby formularz nie przepuszczał niepoprawnych danych? W tym momencie pozwala zapisywać w bazie wszystko. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Zapewne walidacja nie działa ponieważ kiedy masz akcję w innej metodzie, to formularz w tej metodzie nie jest budowany, ponieważ jest zbudowany w innej, strona się przeładowuje, a tamta akcja nie jest wykonywana. Więc tak naprawdę Zend nie widzi żadnych pól formularza.
Jak to naprawić? W Zendzie tworzy się klasy formularzy. W /forms umieszczasz klasę formularza np. o nazwie Application_Form_Przyklad Tworzysz metodę i przekazujesz formularz w taki sposób
Analogicznie w drugiej metodzie
Tutaj masz opisane http://framework.zend.com/manual/1.12/en/l...reate-form.html btw. po co uczysz się jeszcze Zenda? Też miałem taką wizje, ale ten framework już jest stary i ją porzuciłem... Ten post edytował Turson 3.11.2014, 08:34:10 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 0 Dołączył: 22.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ok, prawie wszystko hula jak powinno, ale nie wyświetlają się komunikaty walidacji pod polami. Chodzi mi o komunikaty 'pole powinno mieć od 2 do 25 znaków' itp. Gdy wszystko jest w jednym kontrolerze nie ma problemu. Jak zrobić żeby one się teraz wyświetlały?
A Zenda się uczę, bo magisterka ![]() Ten post edytował Vill 8.11.2014, 17:17:08 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Jak nie wypełnisz danych formularza to do bazy wrzuca? Czy tylko nie ma komunikatów ale i tak nie wrzuca? I pokaż nowy kod
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 0 Dołączył: 22.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie wpisuje mi do bazy danych, które nie przeszły walidacji. Jeżeli mam coś takiego w kontrolerze
To wyświetla się napis "Błąd. Nie przeszło walidacji". Chciałabym zrobić taki efekt, że w przypadku niepoprawnych danych formularz wyświetla się ponownie z komunikatami, w którym polu są błędne dane i dlaczego. Redirect na formularz załaduje czysty formularz. Gdy wszystko znajduje się w jednym kontrolerze, to formularz po prostu odświeża się, ale posiada już dodatkowe pola pod inputami informujące które dane nie przeszły walidacji i dlaczego. Np. 'pole musi posiadać więcej niż 2 i mniej niż 25 znaków' (po angielsku oczywiście). Chcę uzyskać taki sam efekt. Czy to jest w ogóle możliwe? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
W ten sposób formularz zostanie wyświetlony ponownie wraz z bledami |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 07:40 |