2010-05-30 9 views
5

Uczę się Zend Framework and Doctrine.Doktryna zend-framework i wzorzec mvc: jaki rodzaj warstwy powinien łączyć dane między modelami i formularzami?

Zastanawiam się, jaka jest najlepsza praktyka łączenia formularzy z modelami i odwrotnie.

W niektórych przypadkach przydatne jest ładowanie danych z modelu w klasie formularza. Powiedzmy, że bardzo wyjątkowa klasa używa wielu modeli.

W innych przypadkach wygodnie jest mieć metody w klasie modelu, która przygotowuje dane dla formularzy. Powiedzmy, że może mieć metodę, która zwraca tablicę przygotowaną dla elementu select-options, więc ta metoda będzie przydatna dla wielu formularzy.

Chciałbym mieć spójność i zawsze utrzymuję tę logikę w jednej warstwie.

Myślę, że kontroler nie jest właściwym miejscem, ponieważ chcę, aby było jasne i proste.

Jaka jest Twoja praktyka, aby osiągnąć ten cel (połączyć modele z formularzami)?

- Podsumowując, muszę przygotować moje modele do wszystkich moich potrzeb. Jeśli mam do czynienia z wieloma modelami, będę miał warstwę usług (czy to właściwy termin?), Która połączy te modele. Tak więc model lub usługa będą miały metody uwadniania danych dla formularzy. I będzie w stanie zaakceptować dane z wartości formularza.

+2

bywam map form i modeli w sterowniku, ale słyszałem argumenty, że model powinien dostarczyć formularz. Formy są ogólnie dziwną bestią, ponieważ zawierają elementy widoku. – Sonny

Odpowiedz

2

Myślę, że kontroler jest najlepszym miejscem do łączenia modeli i formularzy. Jeśli chcesz zapobiec dużej ilości kodu do wypełnienia formularza, utwórz metodę wypełniania formularza akceptującego model.

Jeśli pozwolisz modelom i formularzom komunikować się bezpośrednio, stanie się to bardzo mylące, co stanie się w określonym czasie. Utworzyłem metody wygody, takie jak metoda wypełniania, aby wszystko było krótkie, ale wszystkie działania powinny zostać zainicjowane przez kontroler, aby zachować centralne miejsce i zapobiec "magicznemu zachowaniu".

Tylko moje 2 centy ..

+0

Podoba mi się twoja odpowiedź, szczególnie dlatego, że potwierdza to, co już robię;) – Sonny