Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [symfony] bindowanie
Forum PHP.pl > Forum > PHP > Frameworki
blackroger
Dzień dobry. Mam taki problem, że:

akcja:
  1. $this->form->bind([url="http://www.php.net/array"]array[/url]('usid'=>$this->getRequest()->getParameter('usid'),
  2. 'login'=>$this->getRequest()->getParameter('login'),
  3. 'stare_haslo'=>$this->getRequest()->getParameter('stare_haslo'),
  4. 'nowe_haslo'=>$this->getRequest()->getParameter('nowe_haslo'),
  5. 'nowe_powtorz'=>$this->getRequest()->getParameter('nowe_powtorz'),
  6. 'imie'=>$this->getRequest()->getParameter('imie'),
  7. 'nazwisko'=>$this->getRequest()->getParameter('nazwisko'),
  8. 'miasto'=>$this->getRequest()->getParameter('miasto'),
  9. 'mail'=>$this->getRequest()->getParameter('mail')
  10. ));
  11. //$this->form->bind($request->getParameter('change_user'));
  12.  
  13. if($this->form->isValid())//jezeli poprawny formularz
  14. {
  15.  
  16. [url="http://www.php.net/echo"]echo[/url] 'Jest valid';
  17.  
  18. }//koniec valid if
  19.  


formularz:(zakomentowana linijka - nazwy pól normalne)
  1. //$this->widgetSchema->setNameFormat('change_user[%s]');


i to działa i jest valid w przypadku dobrze wpisanych danych


a to nie działa w przypadku dobrze wpisanych danych:
akcja:
  1. $this->form->bind($request->getParameter('change_user'));


formularz:
  1. $this->widgetSchema->setNameFormat('change_user[%s]');


w drugim przypadku walidacja działa i wszystko jest dobrze, widzi tablice, ale nie ustawia zmiennej valid. Poprostu formularz ładuje się na nowo...
Crozin
Coś się pochrzaniło z listingami kodów - jakbyś mógł poprawić.

Co do problemu - powinno działać takie coś bez problemów, mógłbyś pokazać kompletny kod jakim sprawdzasz działanie tego? Gdzieś indziej prawdopodobnie robisz błąd.
BigB
Witaj.

Wyświetlasz gdzieś w templacie błędy? Bo jeśli formularz nie przeszedł poprawnie walidacji, to powinny Ci się wyświetlić komunikaty błędów od walidatorów i po nich spróbuj dojść do problemu.
Upewnij się też, że ustawiłeś walidatory dla wszystkich pól formularza, jeśli korzystasz z NameFormat.
blackroger
Dzięki za odpowiedzi. Wcześniej już rozwiązałem problem, ale BigB ma rację. Nie było walidatora dla jednego pola i to psuło całość. Po różnych testach i próbach stwierdzam, że chyba najlepiej dziedziczyć po BasexxxxxForm, który jest generowany automatycznie i nadpisywać tą klasę swoją klasą. Pozwala to uniknąć tego typu problemów, zarówno w momencie tworzenia obiektu i wkładaniu do konstruktora całego obiektu jako argumentu, tak i przy bindowaniu. Można dzięki temu zaoszczędzić sporo czasu...
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.