![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 743 Pomógł: 0 Dołączył: 11.11.2003 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Witam,
znów mam problem z zaplanowaniem przepływu wszystkich danych w aplikacji. Wedle poprzednich podpowiedzi, które uzyskałem na forum zrobiłem tak (na przykładzie dodawania newsa): NewsModel.php
NewsController.php
No i niby wszystko dziala ladnie, mam kontroler ktory przekazuje dane do modelu, model te dane zapisuje i wszystko jest good. Ale teraz gdy planuję dodać nową kolumnę w bazie danych, muszę modyfikować Model, wszystkie kontrolery które uzyły danego Modelu. Dodatkowo jeśli gdzieś nie zmienię kontrolera to np. content zapisze mi sie jako title, bo zmieni sie kolejnosc zmiennych wchodzących do funkcji i wszystko sie pokrzaczy. Dobrze to robię, twrząc dla każdego zadania nową funkcję w modelu i przekazując do niej dane jako parametry funkcji? I też pytanie czy to nie jest bez sensu takie duplikowanie wielu funkcji które dostarcza mi ORM Propel. Np. żeby pobrać newsa o danym id, napisąłem funkcję w modelu:
Ale przecież równie dobrze mogłem od razu w kontrolerze pobrać newsa za pomocą funkcji dostarczonych przez ORM:
Jakie mam korzyści z przerzucania zadań do modelu. Nie dodaję sobie tym zbędnej pracy, pisząc masę metod które w sumie już posiadam? Ten post edytował Kuziu 14.02.2011, 12:20:02 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 743 Pomógł: 0 Dołączył: 11.11.2003 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Ale jeśli zrobię tak jak piszesz:
to otrzymuję coś identycznego jak używając samego propela:
A co wtedy z walidacją przy zapisie itp. przecież w takim podejsciu przekazuje wpisywanie danych do Kontrolera. No chyba ze metoda ->save(); zwracała by wyjątek przed zapisem, a wcześniej obiekt by się nie przejmował czy dane są poprawne czy nie, tylko przy zapisie miałbym wyjątek. Dobrze kombinuję? Co do addChild() to za dużo we flashu siedze i z przywyczajenia palnąłem (IMG:style_emoticons/default/biggrin.gif) A jeszcze jedno. W przypadku np. błędnych danych Model zwraca wyjątek do kontrolera że nie mógł np. stworzyć nowego użytkownika bo taki o podanym loginie już istnieje. A czy uprawnienia Admina itp. również powinien sprawdzać model? Wtedy musiałby wiedzieć w jakim trybie jest. Ewentualnie czy funkcja dodaj użytkownika a dodaj użytkownika z poziomu Admina powinna być drugą kopią, ewentualnie osobną metodą z wywołaniem tej poprzedniej? Ten post edytował Kuziu 14.02.2011, 19:07:27 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 592 Pomógł: 62 Dołączył: 3.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
No chyba ze metoda ->save(); zwracała by wyjątek przed zapisem, a wcześniej obiekt by się nie przejmował czy dane są poprawne czy nie, tylko przy zapisie miałbym wyjątek. Dobrze kombinuję? osobiście stosuję coś takiego, że klasa typu News ma swój stan poprawna/niepoprawna, stan klasy jest uaktualniany przy każdej zmianie pól obiektu, więc w zasadzie sprawdzenie poprawności danych odbywa się w klasie News, natomiast to klasa NewsModel sprawdza poprawność klasy News (np. przy edycji/dodawaniu) i wówczas w przypadku niepoprawności klasy News NewsModel rzuca wyjątkiem, który jest łapany przez kontroler edit: uprawnienia sprawdzane są przez kontroler (lub klasę do tego przeznaczoną, ale wywoływaną z poziomu kontrolera), gdyż badanie uprawnień nie nalezy w ogóle do zadań modelu news Ten post edytował rzymek01 16.02.2011, 12:32:19 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 01:33 |