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
Foxx
post
Post #2





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

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


Ale zauważ, że w przypadku firmy muszę zlikwidować walidację imienia i nazwiska pozostawiając jednak resztę formularza użytkownika bo jest tam jego login i hasło. Zrobiłem to teraz za pomocą:

  1. public function executeRejestruj($request)
  2. {
  3. $this->form = new UzytkownikForm();
  4. $this->form->mergeForm(new FirmaForm());
  5.  
  6. # manipulacja walidacją
  7. $formularz = $request->getParameter('uzytkownik');
  8.  
  9. if($formularz['typ_id'] == 1) # firma
  10. {
  11. $this->form->getValidator('imie')->addOption('required', false);
  12. $this->form->getValidator('nazwisko')->addOption('required', false);
  13. }
  14. else # osoba
  15. {
  16. $this->form->getValidator('nazwa')->addOption('required', false);
  17. }
  18.  
  19. $this->form->bind($request->getParameter('uzytkownik'));


Czy to ujdzie?
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: 28.12.2025 - 22:22