Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF]zend_form validator
blum1
post 21.11.2012, 09:46:01
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 24.04.2007

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


Witam
Mam sobie formularz (Zend_Form) który ma select z trzema opcjami (kategoria, grupa, tresc) oraz 3 pola kategoria, grupa, tresc
Chciałbym żeby w zależnosci która opcja z selecta zostanie wybrana wymagane było wypełnienie okreslonego pola.
Zrobiłem to na poziomie javascriptu ale to jest rozwiazanie tymczasowe które mnie niezadowala, chciałbym to jakos sensownei rozwiazac na poziomie Zend_Form

Jakieś pomysły, ktos cos takiego robił ?

Pozdrawiam
Go to the top of the page
+Quote Post
CuteOne
post 21.11.2012, 15:47:59
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1.  
  2. $select = $form -> getElement('select');
  3.  
  4. swicth($select->getValue()) {
  5.  
  6. case 1:
  7. $pole = $form->getElement('pole')->addValidator(new walidator());
  8. break;
  9.  
  10. case 2:
  11. $pole = $form->getElement('pole2')->addValidator(new walidator2());
  12. break;
  13. }

Go to the top of the page
+Quote Post
rudi23
post 3.12.2012, 23:11:28
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 18.11.2012

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


  1. class Application_Form_MyForm extends Zend_Form {
  2.  
  3. public function init(){
  4. $this->addElement('select', 'select', array(
  5. 'multiOptions' => array('kategoria', 'grupa', 'tresc');
  6. ));
  7.  
  8. $this->addElement('text', 'kategoria');
  9. $this->addElement('text', 'grupa');
  10. $this->addElement('text', 'tresc');
  11.  
  12. }
  13.  
  14. public function isValid($data){
  15. if($data['select']) == 0){
  16. $this->getElement('kategoria')->setRequired();
  17. } elseif($data['select']) == 1){
  18. $this->getElement('grupa')->setRequired();
  19. } elseif($data['select']) == 2){
  20. $this->getElement('tresc')->setRequired();
  21. }
  22.  
  23. return parent::isValid($data);
  24. }
  25. }
Go to the top of the page
+Quote Post
Pilsener
post 4.12.2012, 21:44:46
Post #4





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


1. Możesz dodawać validator dynamicznie na podstawie requesta w kontrolerze - jak w poście CuteOne
2. Możesz przeciążyć metodę isValid jak rudi23 - to jest dobre, jeśli wiesz, że validator będzie absolutnie customowy i użyjesz go tylko raz
3. Możesz spreparować sam formularz przekazując mu dane z requesta np. w konstruktorze - czyli zrobić to samo co w kontrolerze tylko gdzie indziej
4. Możesz napisać własny validator na tą okazję - to jest dobre, jeśli zakładasz ponowne jego użycie.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2025 - 07:14