Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [symfony][doctrine] Formularz i dodawanie do wielu tabel
Forum PHP.pl > Forum > PHP > Frameworki
esq
Witam, na początek muszę przyznać, że dopiero zaczynam z Symfony i to o co pytam zapewne dla wielu jest banalne.

Zważywszy jednak na okoliczności, późną porę i czym jeszcze mógłbym tam wytłumaczyć nieumiejętność myślenia w tej chwili chciałbym prosić Was o pomoc.

Otóż przyszło mi za zadanie zedytować już gotowy formularz tak, aby dodać w nim pole textarea, z którego każda linia miałaby trafiać jako rekord do jednej tabeli bazy danych, zaś cała reszta danych miałaby trafiać do drugiej tabeli. Relacja między tabelami oczywiście wiele do wielu. Tak więc uściślając: n pól formularza ma się zapisywać do jednej tabeli, 1 pole formularza (textarea) ma zostać rozdzielone na linie, a każda z nich osobno dodana do drugiej tabeli a pomiędzy nimi mają w trzeciej tabeli utworzyć się powiązania,

Problem wydawałby mi się banalny w Zendzie, z którym mam już trochę doczynienia, jednak jeśli chodzi o Symfony nie mam pojęcia co w którym miejscu należałoby dokładnie zrobić. Gubię się ze względu na ścisłe powiązanie formularza z bazą danych, a dodając że dochodzi przy tym jeszcze konieczność dodawania wielu rekordów z jednego pola zaczyna mnie to delikatnie martwić.

Teoretycznie rozumiem, że całe rozbicie wartości z pola textarea możnaby zrobić na poziomie akcji, i dalej wykonywać po prostu zapytaia do bazy poprzez doktrynę, jednak nie jestem pewien czy to rozwiązanie jest do końca, jak to mówią "zgodne ze sztuką", tzn. nie chciałbym szukać drogi naokoło jeżeli jest na to prostsze rozwiązanie. Być może istnieje jakiś inny sposób i tkwi on gdzieś w mechanizmach Symfony (rozbicie tego na dwa podformularze, dodanie jednego normalnie a tego z textarea na około, albo jakaś mechanika gotowa dla takich przhypadków).

Wielu zapewne zechce odesłać mnie do Google (byłem i jestem, cały czas szukam, czegoś co mógłbym uznać za związane bezpośrednio z problemem), manuali itd., jednak piszę tu gdyż czas zaczyna mnie trochę poganiać.

Z góry dziękuję za rady,
pozdrawiam,
esq.
Crozin
Jak rozumiem chodzi o Symfony2, tak?

1. Musisz mieć poprawny model obiektu, który będziesz "napełniać" danymi z formularza. Z tego co piszesz wynika, że obiekt ten składać powinien się z:
a) Pojedynczego obiektu z bazy danych (encji Doctrine)
cool.gif Kolekcji obiektów z bazy danych (również encji Doctrine).
2. By tę kolekcję obiektów wyświetlić w postaci pola TEXTAREA musisz skorzystać z ValueTransformera, który zamieni tekst w kolekcję obiektów i odwrotonie. W Google jak i samym FW jest sporo przykładów.
3. W sumie to tyle

PS. Doctrine to Doctrine, a nie jakaś doktryna. wink.gif
esq
Niestety nie dodalem, że projekt jest w Symfony 1.4 bez możliwści przeniesienia w tej chwili.. Jak wiele to zmienia w Twoim opisie?
l3l0
esg, tak przypuszczalnie dużo to zmienia wink.gif

Ogólnie rozumiem że masz formularz do klasy modelu który zapisuje jeden obiekt i chcesz na podstawie jakiegoś textarea stworzyć inne obiekty... dziwne ale kto co lubi smile.gif

Poprostu do formularza dodajesz sobie widget i walidator dla typu textarea i w np. metodzie doSave obsługujesz sobie tworzenie nowych obiektów na podstawie wartości z textarea. Wartość z textarea pobierasz przez metode formularza "getValue".

Zobacz sobie na przykład tutaj:

http://www.symfony-project.org/forms/1_4/e...e_dosave_method

Pozdrawiam l3l0
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.