Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF]zend_form validator
Forum PHP.pl > Forum > PHP > Frameworki
blum1
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
CuteOne
  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. }

rudi23
  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. }
Pilsener
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.
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.