![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 17 Dołączył: 9.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
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.
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. Ten post edytował maziak 22.12.2012, 11:35:31 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Co to za dziwny pomysł, by do encji przekazywać ID zamiast obiektu, który tworzy relację?
2. Pokazany przez Ciebie mechanizm jest w poprawny (poza punktem pierwszym czy bezpośrednim wykorzystaniem Doctrine w kontrolerze), obiekt "początkowy" przekazany do formularza nigdy nie jest czyszczony. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 17 Dołączył: 9.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Tak jak pisałem, prawdopodobne jest, że popełniam jakies błędy logiczne, gdyż jak chodzi o Symfony2 to dopiero zaczynam. Dzięki naturalnie za wytknięcie. Poprawie to.
Jednak odnośnie punktu 2, to wręcz przeciwnie. Jest czyszczony podczas bindowania. https://github.com/symfony/symfony/issues/1341 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Podlinkowany problem dotyczy chyba jakiejś wczesnej wersji (alfy/bety?) symfony2, ponieważ jest sprzed 2 lat. Sf2 zostało wydane półtora roku temu.
Bardzo prosty przykład:
Wynikiem działania jest (po wypełnieniu jednoelementowego formularza): Kod object(Test\Author)[716]
public 'name' => string 'test name' (length=9) public 'email' => string 'default@email.com' (length=17) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 17 Dołączył: 9.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Faktycznie, stary topic. Zasugerowałem się tym "Milestone 2.2" (dlaczego to tam jest wpisane jest to nie wiem?)
Niemniej problem pozostaje. Gdy używam var dumpa do pokazania jak wyglądają dane w formie, otrzymuję, że profileId jest równe NULL, nawet, gdy (tylko dla testu) wpisuję tam dane "na sztywno", zgodnie z poniższym :
Pozostałe dane, które przesyłam w formularzu, są obecne. Czy problem może dotyczyć tego, że faktycznie wpycham tam ID zamiast obiektu? Choć wydaje mi się, że powinno działać. Dodam, że używam SF w wersji 2.1. ----- EDIT: Ok, udało mi się. Rozwiązanie znajduje się w poniższym temacie, na samym dole. http://stackoverflow.com/questions/1340105...oesnt-supply-it Ten post edytował maziak 25.12.2012, 16:04:30 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 29.09.2025 - 15:33 |