Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][Doctrine] Formularze, przechowanie zawartości pola "entity"
Forum PHP.pl > Forum > PHP > Frameworki
rcetra
Jest sobie kod, który ma za zadanie wziąc dane z formularza przy wywołaniu POST i zapisać do sesji.
Kiedy już ma zapisane dane, ma je wykorzystać jako dane domyślne dla formularza.
Zadanie banalne, ale próbuję żeby się nie napisać zbyt wiele i nie tworzyć od nowa obiektów, po prostu te dane zserializować.
Niestety, pojawia się błąd "Entities passed to the choice field must be managed 500 Internal Server Error - FormException".
Czy ktoś zna jakiś sposób na zgrabne przeniesienie tych danych np. do następnej strony?

Fragment z kontrolera z formatką:
  1. $session = $this->get('session');
  2. $session->start();
  3. $defaultData = $session->get($this->name_session_data, array());
  4. if(is_string($defaultData)){
  5. $defaultData = unserialize($defaultData);
  6. }
  7. // Formatka do filtrowania
  8. $filter_form = $this->createFormBuilder($defaultData)
  9. ->add('lang', 'entity', array(
  10. 'class' => 'BDKTranslatorBundle:TranslatorLang',
  11. 'multiple' => true,
  12. 'expanded' => true,
  13. 'label' => 'Język',
  14. 'required' => false
  15. ))
  16. ->add('app', 'entity', array(
  17. 'class' => 'BDKTranslatorBundle:TranslatorApp',
  18. 'multiple' => true,
  19. 'expanded' => false,
  20. 'label' => 'Aplikacja',
  21. 'required' => false
  22. ))
  23. ->add('name', 'text', array(
  24. 'label' => 'Nazwa tekstu',
  25. 'required' => false
  26. ))
  27. ->add('desc', 'text', array(
  28. 'label' => 'Opis tłumaczenia tekstu',
  29. 'required' => false
  30. ))
  31. ->add('body', 'text', array(
  32. 'label' => 'Tekst tłumaczenia tekstu',
  33. 'required' => false
  34. ))
  35. ->add('without_translation', 'checkbox', array(
  36. 'label' => 'Bez tłumaczenia',
  37. 'required' => false,
  38. ))
  39. ->getForm();
  40.  
  41. if ($request->getMethod() == 'POST') {
  42. $filter_form->bindRequest($request);
  43. $filter_data = $filter_form->getData();
  44. $session->set($this->name_session_data, serialize($filter_data));
  45. $session->save();
  46. }


MickDev
Cześć,

Wydaje mi się, że jest to spowodowane jakimś błędem w BDKTranslatorBundle:TranslatorLang lub BDKTranslatorBundle:TranslatorApp.
adbacz
Na przesłanie danych do następnej strony (nawet bez przekazywania danych post, wystarczy zwykłe przekierowanie) to masz przecież Flashes w Symfony2. W dokumentacji jest wszystko ładnie napisane jak to wykorzystać. Możesz sobie zapisać pod jakąś nazwą całą tablicę post i wysłać ją jako jednorazową wiadomość session flash.
rcetra
Cytat(adbacz @ 15.01.2012, 00:39:10 ) *
Na przesłanie danych do następnej strony (nawet bez przekazywania danych post, wystarczy zwykłe przekierowanie) to masz przecież Flashes w Symfony2. W dokumentacji jest wszystko ładnie napisane jak to wykorzystać. Możesz sobie zapisać pod jakąś nazwą całą tablicę post i wysłać ją jako jednorazową wiadomość session flash.

Potrzebuję mieć te dane nie tylko na jedno kliknięcie jak podaje http://symfony.com/doc/2.0/book/controller...#flash-messages
Formularz znajduje się nad listą. W zasadzie jest formularzem wyszukiwania. Chcę, żeby po edycji, ktoś wrócił dokładnie w to samo miejsce, z którego kliknął (kliknęła) coś na liście. Oprócz stanu formularza chcę też zapamiętać adres (ze zmiennymi GET) i ewentualnie przekierować go na dokładnie tą samą stronę.
Sądzę, że to moze mieć związek z połączeniami do bazy, ale chyba już nic na to nie poradzę w takim razie. Sądziłem, że ktoś już miał rozwiązany ten jak się zdaje trywialny problem. No nic, zrobię na piechotę, też tak można ;-)
adbacz
Wracanie na ostatnią stronę - Ja ma to rozwiązane tak, że z każdym requestem zapisuję do ciacha użytkownikowi jego ostatni adres, oprócz kilku. Potrzebne mi to, by przekierowac użytkownika na ostatnią odwiedzaną przez niego stronę, gdy ten się zaloguje lub wyloguje.

Co do przechowywania wiadomości - nie możesz zwiększyć czasu wygaśnięcia sesji i w niej wszystkiego co potrzeba? Wg mnie najprostrzy sposób. No chyba, że Ci to jakoś nie podchodzi no to już musisz albo czekac na czyjeś pomysły albo samemu myśleć.
rcetra
Cytat(adbacz @ 16.01.2012, 17:56:20 ) *
Wracanie na ostatnią stronę - Ja ma to rozwiązane tak, że z każdym requestem zapisuję do ciacha użytkownikowi jego ostatni adres, oprócz kilku. Potrzebne mi to, by przekierowac użytkownika na ostatnią odwiedzaną przez niego stronę, gdy ten się zaloguje lub wyloguje.

Dzięki za pomysł, może go wykorzystam. Z tym formularzem poradziłem sobie na piechotę. Przed zapisem zamieniam na czystą tablicę z identyfikatorami z listy a kiedy mam go pokazać wracam do postaci obiektów. W sumie proste, tylko te dodatkowe zapytania mnie męczą. Niestety, nie ma chyba innego rozwiązania.
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.