Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] modyfikacja walidatora z poziomu szablonu
Foxx
post
Post #1





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Symfony 1.4.

Formularz rejestracji zaczyna się od wyboru typu użytkownika. Domyślnie jest to firma i rejestracja składa się z pól login, hasło i nazwa firmy. Jeżeli zostanie wybrany typ "osoba prywatna" to pole "nazwa firmy" znika i pojawiają się pola "imię" i "nazwisko".

Dane firmy są połączone relacją z tabelą z użytkownikami więc do wyświetlenia takiego mieszanego formularza (login i hasło + nazwa firmy) używam merge obu formularzy. Każde z wymienionych pól jest obowiązkowe.

Mój problem polega na tym, że jeżeli zostanie wybrana "osoba prywatna" to mimo, ze pole "nazwa firmy" jest ukrywane za pomocą JS to walidacja nadal działa i domaga się wpisania czegoś w to niewidoczne pole.

1. Jedne co mi przychodzi do głowy to deaktywacja walidacji dla tego pola już w akcji wykonywanej po wysłaniu formularza, po bind() a przed if($this->form->isValid()). Jeżeli to jest prawidłowe podejście to w jaki sposób powinna wyglądać instrukcja dla przykładowego pola?

2. Czy jest jakaś bardziej elegancka metoda na zrobienie czegoś takiego?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
toffiak
post
Post #2





Grupa: Zarejestrowani
Postów: 395
Pomógł: 80
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Skoro dane firmy są w osobnej tabeli to przy wybranym typie "osoba prywatna" żadne dane/rekordy firmowe nie powinny być zapisywane a więc nazwa firmy nie musi być wymagana, podobnie jak imie i nazwisko, dzięki temu formularz przechodziłby walidację a następnie w metodzie doSave() formularza wystarczyłoby sprawdzić które pola zostały wybrane.

Czyli dla rejestracji osoby prywatnej wystarczyłoby wyczyścić zmienną łączącą formularze żeny nie tworzyć pustych rekordów a nastąpnie zapisać cały formularz a dla firmy tylko zapisać formularz, odpowiednie rekordy zostałyby dodane automatycznie.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 10:55