![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Więc chce zrobić coś takiego
Mam 2 tabele users i users_email_addresses i teraz chce na stronie mieć 2 inputy - nazwa użytkownika - email użytkownika I teraz tak stworzyłem sobie Entity
i
I teraz w deklaracji formularza mam coś takiego
Jako że przy dodawaniu nowego usera nie ma żadnego adresu email to pole input się nie wyświetla więc na hama dodałem (tak wiem że na stronie jest opcja dodawania pola przez JS)
I wszystko było by ok gdyby nie to że po wysłaniu formularza dostaje komunikat Cytat Catchable Fatal Error: Argument 1 passed to Test\UserBundle\Entity\Users::setEmail() must be an instance of Test\UserBundle\Entity\UsersEmailAddresses, array given.. No i teraz pytanie brzmi czy dobrze się do tego zabrałem (IMG:style_emoticons/default/questionmark.gif) Bo jak mam przekazać obiekt UsersEmailAddresses w sytuacji kiedy chce aby najpierw user wpadl do bazy a pozniej adres email z id_users wczesniej dodanego. Chyba że to działa insert (email) id = insert (users) update (email) set users_id = id (a tak podejrzewam że to działa) Ps Sorki za może głupie pytanie ale z ORM do tej pory miałem nie wiele wspólnego. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 25.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Gdy tworzysz formulasz UsersType z polem
('email', 'collection', array( 'type'=> new UsersEmailAddressesType(), )) do tego pola przypisywane są powiązane Entity UserEmailAddresses. Gdybyś miał juz UserEmailAddresses w relacji do Users, widniałyby w formularzu. Jako, że ich fizycznie nie ma, zatem ich nie przypisuje. Rozwiązanie brzydkie: Zanim utworzysz formularz usersType, stwórz entity Users, któremu dodasz entity UserEmailAddresses $user = new Users(); $user->addUserEmailAddresses(new UserEmailAddresses()) $form = $this->createForm(new UserType(), $user); wtedy powinieneć zobaczyć chciane pole Email (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ok wszystko fajnie pole się pojawia, formularz leci ale dane do
users się zapisują users-email-addresses się zapisują ale bez users_id
Czy coś tu jeszcze trzeba dopisać (IMG:style_emoticons/default/questionmark.gif) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 141 Pomógł: 24 Dołączył: 21.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Popatrz na to:
http://adurieux.blogspot.com/2011/10/oneto...trine2-and.html masz tam dokladnie pokazane jak powinna wygladac relacja, robilem relacje tak samo jak tam jest pokazane i zawsze działały, włącznie z SonataAdminBundle nidy nie było problemów. Moim zdaniem brakuje Ci w entity konstruktora z ArrayCollection i nie zapomnij o setterach z instancją do klasy w relacji, pozdrawiam Ten post edytował minolone 28.05.2013, 11:11:13 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Już nie moge gapie się w to i gapie i nie moge znaleźć błędu
i kontroler jak w poprzednim poscie. I nadal się nie zapisuje users_id w tabeli users_email_adresses |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Po pierwsze nazewnictwo. Dlaczego do reprezentacji pojedynczego użytkownika używasz nazwy Users (zamiast User), zaś do kolekcji maili email zamiast emails? Przecież to nie ma najmniejszego sensu, a kod bardzo źle się czyta.
2. Typ collection domyślnie pozwala jedynie na edycje istniejących elementów kolekcji, nie ich dodawanie czy kasowanie. Musisz ustawić opcje allow_add i allow_delete na TRUE. 3. Podstawowa lektura: dokumentacja typu collection. 4. Możesz też być zainteresowany typem entity oraz How to Embed a Collection of Forms. Ten post edytował Crozin 28.05.2013, 12:06:51 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
1. Tak wiem piszesz mi to za każdym razem (IMG:style_emoticons/default/smile.gif)
2.
Jak to zrobić żeby z jednego formularza wrzucić do dwóch tabel przyczym do 2 ma trafiać id z pierwszej ? 3, 4 Czytałem EDIT: Rozwiązałem to tak, nie wiem czy to najlepsze rozwiązanie ale działa
Ten post edytował skowron-line 28.05.2013, 13:23:19 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 23:44 |