Mam następujący problem. Próbuję umożliwić użytkownikowi dodawanie pewnych obiektów do swojego konta. Elementy te znajdują się w tabeli która zawiera w sobie miedzy innymi ID konta którego dotyczy wpis.
Generuję formularz standardowo na podstawie Entity - ale z wyłączeniem pola ID usera. Jasnym jest, że nie mogę załączyć id usera jako pola hidden formularza, bo ktoś mógłby za pomocą prostego tampera requestów edytować konta innych użytkowników.
I tutaj pojawia się problem.
<?php public function add_objectAction(Request $request) { $entity = new Object(); $entity->setProfileId($this->getUser()->getProfile()->getId()); $form = $this->createForm(new ObjectType(), $entity); $form->bind($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($entity); $em->flush(); return $this->redirect($this->generateUrl('show_myprofile')); } 'entity' => $entity, 'form' => $form->createView(), )); }
Myślałem, że $entity->setProfileId($this->getUser()->getProfile()->getId()); załatwi sprawę, a tu się okazuje, że podczas bindowania formularza wszystkie dane w entity są czyszczone.
Zatep pytanie wprost brzmi : jak dodać ID użytkownika do danych zasubmitowanego forma, tak aby przeszedł przez walidację?
Bardzo mnie dziwi brak obsługi takiej typowej sytuacji w Symfony2, zatem podejrzewam, że może popełniam tutaj jakiś błąd logiczny i zabieram się za sprawę od złej strony.
Będę wdzięczny za podpowiedź jak to zrobić lub jak Wy rozwiązalibyście taką sytuację w swoim projekcie(dodawanie obiektów do tabeli skojarzonych z kontem usera poprzez ID), jeżeli robię to źle.