![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 496 Pomógł: 2 Dołączył: 15.07.2011 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam formularze: Formularz1, Formularz 2, Formularz 3 Zrobiłem następujący MERGE:
Teraz w kontrolerze mam dwie akcje, które służą do edycji i update'u :
Zastanawia mnie dlaczego w momencie gdy klikam button SAVE to dostaję następujące informacje że pola "Username" i "Email address" już istnieją w bazie: An object with the same "email_address" already exist. An object with the same "username" already exist. 1) Proszę o podpowiedź czy dobrze obsługuję cały proces UPDATE'U w Symfony przy MERGE trzech Formularzy. 2) Czy w akcji executeEdit muszę zrobić operacje setDefault() na polach tabel złącoznych żeby przekazać do formularza dane. Da się to zrobić prościej? I czy w akcji Save wystarczy że zrobię $this->form->save() czy muszę zrobić operacje save() na tabelach dołączonych? wiem, że dużo napisałem ale wystarczy mi krótki opis jak to ma wyglądać w moim przypadku czyli gdy mam MERGE trzech tabel dzięĸi Może dodam jeszcze że w routingu mam tak:
natomiast w temaplate'ach w akcji formularzy mam tak (w obu, zarówno w editSucces jak i saveSuccess): może tutaj robię coś źle Ten post edytował damianooo 3.11.2012, 13:24:00 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 7 Dołączył: 10.03.2011 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
$form1->mergeForm($form2) kopiuje wszystkie widgety i walidatory z $form2 do $form1 i nic poza tym. Możesz sobie otworzyć klasę tego drugiego formularza zaznaczyć widgety i validatory, zrobić ctr+c a potem ctr+v w pierwszym formularzu i dostaniesz w efekcie dokładnie to samo. Nie są kopiowane żande metody więc jeżeli w formularzu drugim masz np. save() to musisz pamiętać żeby skopiować co tam chcesz do pierwszego formularza.
Co do aktualizacji danych w bazie mergeForm() nie ma zadnego znaczenia. Formularz to formularz, nieważnie że mergowany. Musisz mieć namieszane albo o czymś zapomniałeś w metodzie save(). Jeżeli w tych mergowanych formularzach masz dane dla innych tabel bazy to musisz je sam zapisać(w przeciwieństwie do embedded forms które są zapisywane automatycznie). Ten komunikat z polami unique walidator wywala dlatego, że zamiast edytować próbujesz jeszcze raz go dodać. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 22:09 |