Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][SF2][Symfony2] Formularz z data_class, Formularz nadpisuje mi domyślne wartości z modelu
c3zi
post
Post #1





Grupa: Zarejestrowani
Postów: 266
Pomógł: 20
Dołączył: 15.11.2006
Skąd: Koszalin

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


Witam,

Mam problem z formularzem w Symfony2, do którego "podpiętą" mam encję. Dodam, iż moja aplikacja jest serwerem RESTowym, także nie zawsze są przesyłane wszystkie pola formularza.

  1. $form = $this->formFactory->create(new MessageType(), $message, array('method' => $method));
  2. $form->submit($parameters);


Dziwne jest to, że obiekt $message (moja encja) posiada pole active i jest ono ustawione na true przed submit(), natomiast na false po submit(). $parameters w tym wypadku nie zawiera pola $active, natomiast ja oczekuję, iż wartość domyślna będzie brana z Entity (w tym wypadku jest to obiekt $message). Wiem, że można użyć w submit() drugiego parametru i ustawić go na false, aczkolwiek niewiele mi to daje, gdyż pojawiają się inne problemy.
Poniżej zamieszczę klasę formularza, Entity oraz kod walidujący (oczywiście wszystko w wersji skróconej).


  1. Entity\Message.php
  2.  
  3. class MessateType
  4.  
  5. ......
  6. /**
  7.   *
  8.   * @var type boolean
  9.   * @ORM\Column(name="cancelFlag", type="boolean")
  10.   */
  11. private $active = true;
  12. ......
  13.  
  14. Form\MessageType.php
  15.  
  16. class MessageType extends AbstractType
  17. ....
  18.  
  19. public function buildForm(FormBuilderInterface $builder, array $options)
  20. {
  21. $builder
  22. ....................
  23. ->add('active')
  24. ;
  25. }
  26.  
  27.  
  28. public function setDefaultOptions(OptionsResolverInterface $resolver)
  29. {
  30. $resolver->setDefaults(array(
  31. 'data_class' => 'IRT\MyBundle\Entity\Message',
  32. 'csrf_protection' => false,
  33. ));
  34. }
  35.  
  36. public function getName()
  37. {
  38. return 'message';
  39. }
  40.  
  41.  
  42. // Controller/Service
  43. // $message->getActive() == true
  44. $form = $this->formFactory->create(new MessageType(), $message);
  45. $form->submit($parameters);
  46. // $message->getActive() == false
  47. // $form->getData()->getActive() == false


Oczekuję tego, iż jeżeli nie podam pola active (a jest to możliwe) to formularz zwróci mi wartość domyślną z entity.


--------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 19.08.2025 - 07:27