Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF2][SF][Symfony2]Tworzenie formularza z obiektami w relacji
Forum PHP.pl > Forum > PHP > Frameworki
amii
Mam encję AdresyIp powiązaną relacjami many:one z encjami Klienci i KlasyAdresowe.
Potrzebuję stworzyć formularz w którym wygenerują się adresy (kolumna z encji AdresyIp) od 1 do 255 do tego ma być wyświetlane pole select powiązane z encją Klienci (wyświetla wszystkie rekordy z encji Klienci), drugie pole ze skojarzonej encji KlasyAdresowe będzie na miało przypisaną wartość readonly.

Czyli chcę stworzyć jeden form, który łącznie doda mi lub zmieni 255 rekordów. Struktura tabeli AdresyIp wygląda tak:
adres | id_klasy_adresowe | id_klienci

Żeby było ciekawiej muszę to zrobić (wygenerować form) w odwołaniu ajax. Jakieś pomysły jak to ugryźć ?

skowron-line
Jezeli chcesz doladowac dane do selectow to ajaxem na route ktora zwroci Ci JSONa
amii
skowron-line u mnie cały formularz jest generowany AJAXem ale mniejsza o to co poprzednio napisałem.
Zrobiłem tak, że w ajaxie generuje po staremu i brzydkiemu bo nie mam pomysłu jak to inaczej zrobić. Co do obsługi to wykombinowałem takie coś:
Czyli w skrócie:
1. Tworzę sobie tablicę na inputach, którą przetwarzam w pętli foreach
2. Odszukuje klienta i klasę adresową z bazy
3. Na końcu uaktualniam rekord AdresyIp ale to nie działa nie wiem czemu, bo w/g dokumentacji trzeba tylko zmienić właściwości obiektu i dać flush żeby doctrine zrobił update na rekordzie

  1. /* obsluga formularza */
  2. if ($request->getMethod() == 'POST') {
  3. $em = $this->getDoctrine()->getManager();
  4. $repositoryKlienci = $this->getDoctrine()->getRepository('IwacomBundleCMSBundle:Klienci');
  5. $repositoryAdresyIp = $this->getDoctrine()->getRepository('IwacomBundleCMSBundle:AdresyIp');
  6. $repositoryKlasyAdresowe = $this->getDoctrine()->getRepository('IwacomBundleCMSBundle:KlasyAdresowe');
  7. $klasa = $request->request->get('klasaadresowa');
  8. $klasyadresowe = $repositoryKlasyAdresowe->findOneByKlasa($klasa[0]);
  9.  
  10. foreach($request->request->get('wybierz-klienta') as $rek => $val) {
  11. $dns = $request->request->get('revdns');
  12. $adres = $request->request->get('adres');
  13.  
  14. $adresyip = new AdresyIp();
  15. $klienci = $repositoryKlienci->find($val);
  16. $adresip = $repositoryAdresyIp->findOneByAdres($adres[$rek]);
  17.  
  18. if ($klienci && $klasyadresowe) {
  19. $adresyip->setAdres($adres[$rek]);
  20. $adresyip->setKlienci($klienci);
  21. $adresyip->setKlasyadresowe($klasyadresowe);
  22. if (!$adresip) {
  23. //tutaj wyjatek potrzebny zeby dodal nowe rekordy
  24. $em->persist($adresyip);
  25. }
  26. $em->flush();
  27. }
  28. }
  29. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.