Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [inny][Symfony2] Jeden do wielu - formularz - jak ?
spacja
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 1
Dołączył: 29.10.2012

Ostrzeżenie: (0%)
-----


Witam, jestem świerzak jeżeli chodzi o symfony. Chciałbym się zapytać jak zrobić dodawanie rekordów jednocześnie do dwóch tabel.
Otóż mam :

1. tabela "Kth" - entity Kth.php
2. tabela "Adresy" - entity Adresy.php

Tabele połączone ze sobą w relacji : Jeden do Wielu ( jeden kth może mieć wiele adresów).

Teraz chciałbym zrobić formularz, korzystają np. z jQuery.
1. wpisuję dane kontrahenta (firma, nip etc.)
2. dodaję N adresów (np. adres korespondencyjny/ siedziba / oddział etc. ) : N - liczba zmienna ( N >= 1)

Dodawanie nowego adresu chcę zrealizować przy pomocy np. button'a; po kliknięciu klonuje odpowiednie pola i wstawia do formy.


Korzystając z transakcji dodać te dane do bazy :
1. dodaj dane kth
dla N adresów ---
2. jeżeli dodano kth bez problemu, dodaj adres[N]

3. jeżeli dodano wszystko poprawnie - zapisz
4. jeżeli gdzie wystąpił błąd - rollback.

I teraz Panie i Panowie - jak to zrealizować ? W C# sprawa prosta, dodawałem sobie na kontrolkę np. 5 adresów, później w pętli zapisywałem każdy po kolei, jak coś poszło nie tak to wyświetlałem error i rollback z bazy i wsio. A tutaj mam spory problem z realizacją tego zagadnienia (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
danio1021
post
Post #2





Grupa: Zarejestrowani
Postów: 4
Pomógł: 1
Dołączył: 24.04.2009

Ostrzeżenie: (0%)
-----


Okej, a więc, transakcje w Doctrine (bo zakładam, że go używasz) opisane są bardzo ładnie tutaj: http://docs.doctrine-project.org/en/2.0.x/...oncurrency.html. Generalnie - nie musisz nic robić, Doctrine robi to za Ciebie, ale jeśli chcesz mieć nad tym większą kontrolę - tam znajdziesz rozwiązanie (Approach 2)
A to co starasz się zrobić, kiedyś znalazłem całkiem eleganckie rozwiązanie: http://toni.uebernickel.info/2012/03/15/an...-prototype.html (IMG:style_emoticons/default/smile.gif)

Ten post edytował danio1021 29.10.2012, 19:43:43
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To nie jest eleganckie rozwiązanie, ale niestety Symfony2 w tym akurat wypadku (operacje na kolekcjach) ma dość kiepskie wsparcie, gdy ma to być w całości oparte o symfony'ową walidację formularzy. Wspomniane wyżej rozwiązanie jest oficjalnym w cookbooku, ale ja osobiście robię to nieco inaczej: albo tworzę elementy dynamicznie, albo mam ukryty blok, który jest klonowany i dołączany po drobnych modyfikacjach do struktury. Do tego najczęściej zdefiniowanie własnego FormType wraz z twigowym widgetem (jeśli całość jest na odpowiednim poziomie skomplikowania), a jeśli jeszcze ma to być reużywalne, to zamknięcie w serwis.
Go to the top of the page
+Quote Post
spacja
post
Post #4





Grupa: Zarejestrowani
Postów: 15
Pomógł: 1
Dołączył: 29.10.2012

Ostrzeżenie: (0%)
-----


Ożesz.... no to widzę trochę nauki przede mną :/ Dzięki panowie za podsunięcie rozwiązania. Ale tak czy siak, nie ma jakiegoś prostszego rozwiązania ? thek - rzuciłbyś jakiś przykład ? Bo przyznam szczerze, że jeszcze nie dotarłem chociażby do tworzenia makr w twigu.

Ten post edytował spacja 30.10.2012, 08:35:24
Go to the top of the page
+Quote Post
thek
post
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Myslę, że te kilka wpisów w cookbooku nieco Ci sprawę przybliżą -> http://symfony.com/doc/2.0/cookbook/form/c...field_type.html Oczywiście to dość prosty przykład na custom form field/type, które można także zamknąć w service. Do tego najlepiej jeszcze machnąć własny theme/form_layout by pole walnąć w render. Przydaje się zwłaszcza gdy masz bardzo nietypowe kontrolki, typu jstree lub inne cuda wianki. Tu masz naprawdę podstawowe przybliżenie tematu http://symfony.com/doc/2.0/cookbook/form/f...tomization.html Zaznaczam jednak, żetworzenie własnych i kombinowanie w Twigu jest mocno nieudokumentowane i wiele rzeczy innych niż podstawowe jest kiepsko opisane. Najlepsze rozwiązanie to... analiza kodu niestety. Sam już niejeden bluzg posłałem gdy coś miałem w Twigu niestandardowego zrobić (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
danio1021
post
Post #6





Grupa: Zarejestrowani
Postów: 4
Pomógł: 1
Dołączył: 24.04.2009

Ostrzeżenie: (0%)
-----


Fakt, bluzgi często towarzyszą pracy z tym frameworkiem na początku, ale jak się nie poddasz to już o wiele łatwiej jest później ;D
Go to the top of the page
+Quote Post
spacja
post
Post #7





Grupa: Zarejestrowani
Postów: 15
Pomógł: 1
Dołączył: 29.10.2012

Ostrzeżenie: (0%)
-----


Dzięki panowie za pomoc, tak czy siak muszę się pouczyć więc dojdzie nowy materiał do kolejki. Odnośnie bluzgów - to ostatnio towarzyszą mi po każdym włączeniu IDE - zawsze myślałem, że framework ma ułatwiać i przyśpieszać pracę, ale na razie wydłuża i komplikuje ją niemiłosiernie :/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.12.2025 - 17:48