Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF] Zend_Form i Zend_Controller_Request
phpmack
post 19.11.2011, 12:16:02
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 1
Dołączył: 11.06.2011

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


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ć?

Ten post edytował phpmack 19.11.2011, 12:16:20
Go to the top of the page
+Quote Post
IceManSpy
post 19.11.2011, 16:48:38
Post #2





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

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


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

Ten post edytował IceManSpy 19.11.2011, 16:48:45


--------------------
Go to the top of the page
+Quote Post
phpmack
post 19.11.2011, 22:02:36
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 1
Dołączył: 11.06.2011

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


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
Go to the top of the page
+Quote Post
IceManSpy
post 20.11.2011, 19:52:57
Post #4





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

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


A jak zrobisz po
  1. $this->view->device_Form = $device_form;

  1. var_dump($_POST);

To co Ci się pokaże?

Ten post edytował IceManSpy 20.11.2011, 19:53:12


--------------------
Go to the top of the page
+Quote Post
phpmack
post 20.11.2011, 22:52:43
Post #5





Grupa: Zarejestrowani
Postów: 55
Pomógł: 1
Dołączył: 11.06.2011

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


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
Go to the top of the page
+Quote Post
IceManSpy
post 21.11.2011, 09:54:26
Post #6





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

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


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.


--------------------
Go to the top of the page
+Quote Post
phpmack
post 22.11.2011, 17:26:27
Post #7





Grupa: Zarejestrowani
Postów: 55
Pomógł: 1
Dołączył: 11.06.2011

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


Błąd odnaleziony - przycisk włączający formularz był typu "submit" zamiast button
Pozdrawiam
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: 21.06.2025 - 23:20