Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] Doctrine i zawiły formularz
Forum PHP.pl > Forum > PHP > Frameworki
blackroger
Na początku zaznaczę że mój problem jest dość nietypowy i nie wiem czy łatwo mi go będzie wyjaśnić. Otóż potrzebuje stworzyć formularz który będzie dynamicznie przyporządkowywał się do modelu danych. Tzn. mam akcję która posiada powiedzmy nazwę modelu oraz parę innych rzeczy. Tworzy ona obiekt formularza (po Baseform) przekazując do niego te parametry. W formularzu jest robiony szereg warunków i pozwoleń, które pola mają się wyświetlić i w jaki sposób.
Zaznaczam że pola (nazwy kolumn są pobierane z bazy), ponieważ właśnie tam znajduje się cała mapa schematu aplikacji.
Problem jest w tym, że nie wiem jak i nie wiem czy się w ogóle da zrobić takie coś, aby po zadeklarowaniu pól połączyć się z konkretnym modelem i uzyskać dostęp do zapisu danych w tym modelu....
Wiem że można takie coś uzyskać wywołując w zależności od modelu różne formularze które właśnie po nich dziedziczą....ale chyba bezsensem byłoby za każdym razem (w zależności od projektu) aktualizować powiedzmy 15-20 formularzy do każdego modelu z osobna.


Jeżeli ktoś mnie zrozumiał proszę o odpowiedź.
destroyerr
Pewnie da się zrobić. Tylko jak mamy Ci powiedzieć jak to zrobić skoro nie wiemy jak wygląda aplikacja? Przecież dostęp do modelu i jego zapisu chyba nie jest trudny.
blackroger
Udało mi się znaleźć rozwiązanie, więc się nim podzielę. Należało stworzyć formularz dziedziczący po BaseFormDoctrine. Następnie dodać metodę getModelName i w środku odwołać się do zmiennej np. $this->model_name i ją zwrócić. Jest to metoda wykorzystywana w klasie abstrakcyjnej sfFormDoctrine znajdującej się nad BaseFormDoctrine. To właśnie tam dodałem zmienna typu protected, którą ustawiam na samym początku konstruktora. Jej wartość ustawiam przepisując ze standardowego wejścia tablicy np. $options[model_name]. W ten sposób można dynamicznie tworzyć formularze do różnych modeli bez konieczności deklarowania ich wcześniej. Nie wiem czy ktoś zrozumie o co mi chodziło, ale podzieliłem się faktem.
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.