![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Otóż mam taki problem. Z bazy pobieram informację o pewnej grupie użytkowników. Będę te informacje wyświetlać w tabeli. W jednym z pół tabeli ma się znaleźć niewielki TextArea za pomocą którego (via AJAX) zostanie do bazy dopisany komentarz dotyczący wybranego użytkownika.
I teraz tak. Wymyśliłam sobie, że cała tabelka powinna być formularzem a te pola TextArea powinny być kolekcją. Tylko jak zrobić, żeby indeksy odpowiadały ID usera. Czyli jesli w tabelce mam userów o id 5,12 i 17 to chcę miec tam pola A może to bez sensu robić to za pomocą FormBuildera skoro i tak będzie obsłużone AJAX-em? Ten post edytował JoShiMa 9.12.2017, 23:05:00 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat Wymyśliłam sobie, że cała tabelka powinna być formularzem a te pola TextArea powinny być kolekcją - słabo, ponieważ formularze powinny jak najbardziej odpowiadać encjom. Im bardziej odejdziemy od struktury danych tym większe problemy w implementacji, formularze w symfony są zaprojektowane pod kątem współpracy z encjami.Najprostsze rozwiązanie to dodanie formularza "UserForm" do wysyłanej do widoku kolekcji, np. tak:
Potem wystarczy jedynie wyrenderować i jeśli mamy akcję do edycji usera via ajax to nie musimy już prawie nic robić poza podpięciem formularza do tej akcji. Oczywiście trzeba wziąć pod uwagę takie rzeczy jak: - csrf - walidacja - obsługa błędów - edycja? Jeśli dodanie formularza do każdego rekordu jest z jakiś powodów (np. wydajność) problematyczne, to można formularz wygenerować znów via ajax oddzielnie dla każdego rekordu. Kolejna opcja to wygenerowanie formularza w JS na onclick bez żadnego requestu, jednak to wiąże się z dość dużym nakładem pracy i powoduje liczne problemy (np. z różnicami w renderowaniu pomiędzy PHP a JS). I znów na ostatnim miejscu można to zrobić całkowicie ręcznie, jednak wtedy musimy implementować wszystko sami (np. walidację). Takie rozwiązanie polecałbym w ostateczności, bo często z jakiś powodów nie da się inaczej. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 16:41 |