Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Zend_Form i Zend_Controller_Request
Forum PHP.pl > Forum > PHP > Frameworki
phpmack
Mam małą zagwozdkę
Tworzę sobie formularz żeby dodawać jakieś dane w DB
  1. class Application_Form_Device extends Zend_Form
  2. {
  3. public function init()
  4. {
  5. $dev_name = new Zend_Form_Element_Text('dev_name');
  6. $dev_name->setLabel('device name')
  7. ->setRequired(TRUE)
  8. ->setAttrib('size', 8)
  9. ->addFilters(array(
  10. new Zend_Filter_StringToLower(),
  11. new Zend_Filter_StringTrim(),
  12. new Zend_Filter_StripNewlines(),
  13. new Zend_Filter_StripTags(),
  14. new Zend_Filter_Alnum()
  15. ))
  16. ->addValidators(array(
  17. new Zend_Validate_NotEmpty()
  18. ));
  19.  
  20. $dev_submit = new Zend_Form_Element_Submit('dev_add');
  21. $dev_submit->setAttrib('id', 'submitbutton');
  22.  
  23. $this->addElements(array(
  24. $dev_name,
  25. $dev_submit
  26. ));
  27. }
  28. }


w kontrolerze tworzę formularz i jego obsługę
  1. public function addAction()
  2. {
  3. $device_form = new Application_Form_Device();
  4. $this->view->device_Form = $device_form;
  5.  
  6. if ($this->getRequest()->isPost()) {
  7. $devData = $this->getRequest()->getPost();
  8. if ($device_form->isValid($devData)) {
  9. //costam robie dodaje do DB itp.
  10. } else {
  11. $device_form->populate($devData);
  12. }
  13. }
  14. }
  15.  


i teraz mam taką sytuacje jakby warunek " if ($this->getRequest()->isPost())" był zawsze spełniony mimo że nie wysłałem żadnych danych tym formularzem. Co to może być - wiadomo że mam też inne formularze w serwisie choćby od logowania i przez to "isPost()" jest zawsze spełniony?
na razie zrobiłem coś takiego że sprawdzam czy w tablicy POST są konkretne klucze należące do tego formularza ale trochę to skomplikowane jeśli w formularzu mam 10 elementów różnego typu. Gdzie leży problem jak to obsłużyć?
IceManSpy
A po czym poznajesz, że warunek jest spełniony?

OT:
  1. $this->view->device_Form = $device_form;

rób po
  1. $device_form->populate($devData);


Wtedy formularz wypełni się niezwalidowanymi danymi smile.gif
phpmack
nawet jak całkiem wywalę
  1. $device_form->populate($devData);

to nic się nie zmienia
poznaje po tym że formularz po odpaleniu od razu wyrzuca komunikaty z walidacji mimo że nic nie zdążyłem wysłać poza tym wrzuciłem na próbę echo po if-ach i wyświetla mi komunikat po odpaleniu formularza
IceManSpy
A jak zrobisz po
  1. $this->view->device_Form = $device_form;

  1. var_dump($_POST);

To co Ci się pokaże?
phpmack
Cytat(IceManSpy @ 20.11.2011, 19:52:57 ) *
A jak zrobisz po
  1. $this->view->device_Form = $device_form;

  1. var_dump($_POST);

To co Ci się pokaże?

po wrzuceniu do widoku pokazało się coś takiego:
  1. array(1) { ["nev_device"]=> string(10) "nev_device" }


questionmark.gif
IceManSpy
Tzn, że jakiś request jest. Poszukaj, gdzie on się wysyła. Możliwe, że nawet nie z tego formularza co masz zadeklarowanego, bo "nev_device" nie masz w pokazanym formularzu.
phpmack
Błąd odnaleziony - przycisk włączający formularz był typu "submit" zamiast button
Pozdrawiam
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.