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.
$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).
Entity\Message.php class MessateType ...... /** * * @var type boolean * @ORM\Column(name="cancelFlag", type="boolean") */ private $active = true; ...... Form\MessageType.php class MessageType extends AbstractType .... { $builder .................... ->add('active') ; } public function setDefaultOptions(OptionsResolverInterface $resolver) { 'data_class' => 'IRT\MyBundle\Entity\Message', 'csrf_protection' => false, )); } public function getName() { return 'message'; } // Controller/Service // $message->getActive() == true $form = $this->formFactory->create(new MessageType(), $message); $form->submit($parameters); // $message->getActive() == false // $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.