![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
Używam FOSUserBundle i chciałem rozszerzyć tabelę użytkownika o dodatkowe informacje. Ale ponieważ te informacje są różne dla różnych typów użytkowników to postanowiłem stworzyć osobne obiekty dla tych zestawów danych. A więc poza encją User.php mam też DoctorData.php. Wybrałem do tego relację dwukierunkową OneToOne.
Zainstalowałem FOSUserBundle i nadpisałem RegistrationController.php ponieważ chciałem rejestrującym użytkownikom nadawać odpowiednie uprawnienia. To wszystko się udało i działa. No i nadszedł czas, że chciałem osadzić formularz z dodatkowymi danymi w formularzu rejestracji. Udało mi się to tak, że widzę wszystkie pola naraz i przy zapisaniu formularza tworzy się w bazie obiekt User oraz obiekt DoctorData. Problem: obiekt DoctorData ma pustą wartość w polu, które powinno przechowywać identyfikator rekordu User. Trochę już się z tym męczę i nie umiem znaleźć elementu, który przegapiam bo jednocześnie nie jestem jeszcze doświadczony w SF2 oraz mam tu do czynienia z "obcym" bundlem. User.php (fragment dotyczący relacji):
DoctorData.php (fragment dotyczący relacji):
Osadzanie formularza (nadpisany formularz rejestracji):
Akcja zapisująca formularz (nadpisany kontroler z FOSUserBundle):
A więc byłbym wdzięczny za pomoc w odkrywaniu dlaczego w DoctorData nie zapisuje się ten identyfikator Usera. Oraz oczywiście za wskazanie innych błędów w rozumowaniu. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 141 Pomógł: 24 Dołączył: 21.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
No tak, chyba miałeś rację z tym błędem, poprawiłem ale nadal nie przyniosło to efektu: zapisują się oba rekordy, w obu tabelach, ale DoctorData pole fos_user_id pozostaje puste. Poprawiłem (chyba?) te wartości pól, przegenerowałem encje i teraz klasy wyglądają tak:
Może chodzi o jakiś konflikt w nadanych nazwach tabel i tych pól, które są takie same? EDIT: sprawdziłem z innymi nazwami i nadal to samo. A może potrzebna jest jeszcze jakaś zmiana w kontrolerze FOSUserBundle? No bo ja go nadpisałem, ale praktycznie nie zmieniłem i nie wiem czy nie trzeba zrobić czegoś żeby uwzględniał dołączony obiekt przy zapisie? Nadałem parametr cascade={"remove","persist"} ale może to nie wystarczy? Żadnego błędu nie ma w _dev, wszystko działa dobrze poza tym, że pole fos_user_id pozostaje puste. Ten post edytował Foxx 5.04.2013, 13:05:07 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 06:34 |