Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]symfony1.4 validiator kontra zmienna post
Forum PHP.pl > Forum > PHP > Frameworki
Mgorka
Witajcie mam mały problem mianowicie zrobiłem formularz rezerwacji wszystkie dane filtruje za pomocą walidatora a do akcji przekazuje z innej datę metodą post lecz gdy wysyłam formularz a nie wypełniłem poprawnie wszystkich pól to standardowo walidatory pokazują komunikaty błędu lecz ginie mi zmienna z datą ma może ktoś pomysł jak to obejść muszę przekazać datę żeby naliczyło mi okres rezerwacji
toffiak
Myślę że dopóki nie podasz kodu kontrolera, tego w którym tworzysz formualrz i tego w którym odbierasz dane wraz z kodem formualrza to trudno będzie Ci pomóc.
Mgorka
Klasa formularza
  1. class RezerwojplForm extends BaseForm
  2. {
  3. public function configure()
  4. {
  5. $this->setWidgets(array(
  6. 'imie' => new sfWidgetFormInputText(array('label' => 'Imie')),
  7. 'nazwisko' => new sfWidgetFormInputText(array('label' => 'Nazwisko')),
  8. 'tel' => new sfWidgetFormInputText(array('label' => 'Telefon')),
  9. 'email' => new sfWidgetFormInputText(array('label' => 'E-mail')),
  10. 'uwagi' => new sfWidgetFormTextarea(array('label' => 'Uwagi')),
  11. 'platnosci' => new sfWidgetFormSelectRadio(array('label' => 'Płatnosci','choices' => $this->getOption('platonosci'))),
  12. 'idpokoj' => new sfWidgetFormInputHidden(),
  13. 'dodatki' => new sfWidgetFormInputHidden(),
  14. 'dataod' => new sfWidgetFormInputHidden(),
  15. 'datado' => new sfWidgetFormInputHidden(),
  16. 'cena' => new sfWidgetFormInputHidden(),
  17. ));
  18. $this->widgetSchema->setNameFormat('dodaj[%s]');
  19. $this->setValidators(array(
  20. 'imie' => new sfValidatorString(array('required' => true), array('required' => 'Pole wymagane')),
  21. 'nazwisko' => new sfValidatorString(array('required' => true), array('required' => 'Nic nie wpisałes')),
  22. 'tel' => new sfValidatorString(array('required' => true), array('required' => 'Nie podales ceny')),
  23. 'email' => new sfValidatorEmail(array(), array('required' => 'To pole jest wymagane', 'invalid' => 'Podaj poprawny adres e-mail')),
  24. 'uwagi' => new sfValidatorString(array('required' => true), array('required' => 'Nie podales ceny')),
  25. 'platnosci' => new sfValidatorChoice(array('required' => false, 'choices' => array_keys($this->getOption('platonosci')))),
  26. 'idpokoj' => new sfValidatorString(array('required' => true)),
  27. 'dodatki' => new sfValidatorString(array('required' => true)),
  28. 'dataod' => new sfValidatorString(array('required' => true)),
  29. 'datado' => new sfValidatorString(array('required' => true)),
  30. 'cena' => new sfValidatorString(array('required' => true)),
  31. ));
  32. }
  33. }

Akcja troszke ją okroiłem
  1. public function executePodsumowanie(sfWebRequest $request)
  2. {
  3.  
  4. $tab1[0]='Paypal';
  5. $tab1[1]='Przelew';
  6. $this->form = new RezerwojplForm(array(), array('platonosci' => $tab1));
  7.  
  8.  
  9. $this->form->setDefault('dataod', $request->getParameter('od'));
  10. $this->form->setDefault('datado', $request->getParameter('do'));
  11. $this->dataod = $request->getParameter('od');
  12. $this->datado = $request->getParameter('do');
  13. $this->id=$request->getParameter('id');
  14. /*
  15.  
  16.   if($request->getParameter('cen')!=0){
  17.   if ($request->isMethod('post')){
  18.  
  19.   $this->form->bind($request->getParameter('dodaj'));
  20.   if ($this->form->isValid()){
  21.  
  22.   $query = new Zamowienieszczegoly();
  23.   $query -> setImie($this->form->getValue('imie'));
  24.   $query -> setNazwisko($this->form->getValue('nazwisko'));
  25.   $query -> setTelefon($this->form->getValue('tel'));
  26.   $query -> setEmail($this->form->getValue('email'));
  27.   $query -> setUwagi($this->form->getValue('uwagi'));
  28.   $query -> setPlatnosci('1');
  29.   $query -> setIdpokoj($this->form->getValue('idpokoj'));
  30.   $query -> setDodatki($dodatki);
  31.   $query -> setCena($this->form->getValue('cena'));
  32.   $query -> setReszta($reszta);
  33.   $query -> setPrzed($przed);
  34.   $query -> setWaluta($this->form->getValue('waluta'));
  35.   $query -> save();
  36.   // rezerwacja info
  37.   $query2 = new Zamowienie();
  38.   $query2 -> setDataod($this->form->getValue('dataod'));
  39.   $query2 -> setDatado($this->form->getValue('datado'));
  40.   $query2 -> setDatazam(date("d/m/Y"));
  41.   $query2 -> setIdszczegoly($query->getIdzamowienieszczegoly());
  42.   $query2 -> save();
  43.  
  44.   $query3 = new Rezerwacje();
  45.   $query3 -> setIdpokuj($this->form->getValue('idpokoj'));
  46.   $query3 -> setIdbiuro($query4->getIdbiuro());
  47.   $query3 -> setIdzam($query->getIdzamowienieszczegoly());
  48.   $query3 -> setDataod($this->form->getValue('dataod'));
  49.   $query3 -> setDatado($this->form->getValue('datado'));
  50.   $query3 -> save();
  51.  
  52.   $this->redirect('/'.$ln.'/rezerwacja/finalizacja/id/'.$query->getIdzamowienieszczegoly());
  53.   }else{
  54.   $this->redirect('/'.$ln.'/');
  55.   }
  56.   }
  57.   }
  58.   }
  59.   }

jak widzicie requestem pobieram date i ją przekazuje dalej do frontu aby na kalendarzy nanieść dni na kalendarz
destroyerr
Z pierwszego postu praktycznie nic nie rozszyfrowałem, natomiast w drugim znalazłem nieścisłość:
  1. $this->widgetSchema->setNameFormat('dodaj[%s]');

  1. $this->form->setDefault('dataod', $request->getParameter('od'));
  2. $this->form->setDefault('datado', $request->getParameter('do'));
  3. $this->dataod = $request->getParameter('od');
  4. $this->datado = $request->getParameter('do');

Przesyłasz w POST tablicę, ale jej nie odbierasz, tylko próbujesz od razu czytać wartości.

Cytat
Rezerwoj

co_jest.gif
Mgorka
  1. $this->form->setDefault('dataod', $request->getParameter('od'));
  2. $this->form->setDefault('datado', $request->getParameter('do'));
  3. $this->dataod = $request->getParameter('od');
  4. $this->datado = $request->getParameter('do');
  5.  

Daty są wysyłane przez inny formularz który nie jest zbudowany przez klase tylko ręcznie wklepany requestem pobieram dane ale gdy walidiator pokaże gdzie są błędy $dataod ginie a ja ją potrzebuję da się to jakość obejśćquestionmark.gif
destroyerr
Chyba już zrozumiałem. Kiedy wyświetlasz właściwy formularz w żaden sposób nie przekazujesz już w żądaniu od i do. Wartości te masz w "przestrzeni" formularza (jako dataod i datado) i stamtąd musisz je pobierać (po przesłaniu właściwego formularza).
Mgorka
a jak mogę się do tego dokopaćquestionmark.gif Chodzi o to że mam 2 formularze jeden gdzie podajemy date początku i końca a drugi z podaniem reszty danych daty wysyłam zwykłym postem do akcji podsumowanie gdzie generuje formularz ten powyżej i wtedy jest ok. lecz gdzy validiator zwróci mi nie wypełnienie jakiegoś pola tej zmiennej nie ma a potrzebowałm bym jej
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.