![]() |
![]() ![]() |
![]() |
![]()
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ć. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 496 Pomógł: 2 Dołączył: 15.07.2011 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
zapominałem dodać że wogóle pierwszy błąd po zapisie to:
co wydaje się najistotniejsze .... ciekawe jest też że jak sprawdzę Firebugiem jaką wartośc ma pole ukryte a wiec ID to jest tam przypisany ID =1 tutaj: nie rozumiem dlaczego tak się dzieje .. postanowiłem to przerobić aby by ło tak jak w Jobeet ale nadal jest coś nie tak ... i podejrzewam że coś mam źle w ustawieniach Formularz1 ... dodam jeszcze, że jak mam konfigurację tego złożonego formularza to mam wypisane wszystkie potrzenbne mi Validatory, które sobie przedziedziczyłem z sfGuardUser oraz z tych dołączonych formularzy , natomiast te pole które nie są mi potrzebne to na nich mam zrobiony UNSET ... nie mam jednak zrobionego validatora na ID (może to jest problem. Poza tym właściwie to widgety przedziedziczyłem z password i password_again (który dopisałem) , a pozostałe pola mam tylko Validatory (bez widgetów, których nie dziedziczyłem) ... no i nie zrobiłem UNSET na ID ftabeli 2 i tabeli 3 ponieważ one się tak samo nazywają ( ID ) jak w tabeli sfGuardUser ... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 22:53 |