Pjotrek80
20.07.2013, 12:22:56
Problem dotyczy strony www - małego CMS opartego o MVC.
Mam klasę warstwy model dla części aplikacji służącej do wyświetlania galerii oraz klasę warstwy model od strony administratora.
Stworzyłem osobną klasę UploadFile i rozszerzyłem ją o klasę modelu galerii w części admin. Czy to dobre rozwiązanie? Czy lepiej to co jest w klasie UploadFIle umieścić w klasie modelu galerii administratora?
Funkcjonalność części administracyjnej pokrywa się częściowo z funkcjonalnością części standardowej - wyświetlanie strony.
Jak skorzystać z tych samych metod pobierania zdjęć w modelu administratorai i modelu służącego do wyświetlania zdjęć na stronie?
thek
20.07.2013, 13:00:28
Stwórz może katalog Core, który zawiera część wspólną dla obu części. Miałbyś wtedy wydzielone wspólne elementy, a także osobne dla części administracyjnej oraz klienckiej. W ten sposób mógłbyś odseparować obie części i biblioteki im potrzebne. W Core, Admin i Client mógłbyś zastosować model MVC niezależnie. Traktując każdą z nich jak swego rodzaju bibliotekę.
Pjotrek80
20.07.2013, 14:55:26
Cytat(thek @ 20.07.2013, 14:00:28 )

Stwórz może katalog Core, który zawiera część wspólną dla obu części. Miałbyś wtedy wydzielone wspólne elementy, a także osobne dla części administracyjnej oraz klienckiej. W ten sposób mógłbyś odseparować obie części i biblioteki im potrzebne. W Core, Admin i Client mógłbyś zastosować model MVC niezależnie. Traktując każdą z nich jak swego rodzaju bibliotekę.
Nie jestem pewien czy nie wprowadziłoby to jakiegoś chaosu obecną strukturę.
Może załączę screena ze strukturą katalogów mojego projektu.
A jaki jest sens rozbijania tego na model dla użytkownika i osobny dla admina? Kontroler powinien odpowiadać za dostęp przez ACL do każdego komponentu modelu.
Pjotrek80
21.07.2013, 15:52:14
Cytat(!*! @ 21.07.2013, 10:09:24 )

A jaki jest sens rozbijania tego na model dla użytkownika i osobny dla admina? Kontroler powinien odpowiadać za dostęp przez ACL do każdego komponentu modelu.

Sam zastanawiałem się nad organizacją struktury, szukałem po sieci i wypytywałem tutaj na forum. I oto efekt

Wydawało mi się to dość logiczne i przejrzyste, bo chyba łatwiej jest się odnaleźć/zorientować w strukturze, jeżeli mamy w katalogu admin rzeczy związane z panelem admina, niż gdyby wszystko zostało wrzucone do jednego katalogu?
Byłbym bardzo wdzięczny gdybyś wypisał jak taka struktura powinna wyglądać i przy okazji odpowiedział na moje wątpliwość dotyczące organizacji klas/kodu wspólnego dla części admina i klienta.
A jak będziesz chciał kasować np. posty z forum który ma widok wspólny dla użytkownika i będziesz chciał coś zmienić to będziesz poprawiał to w 2ch plikach? Model jest jeden,wspólny i tylko on, ewentualnie widok, to kontroler wszystkim steruje jak wskazuje jego nazwa i może być on osobny (a nawet powinien) dla panelu.
Pjotrek80
22.07.2013, 10:46:05
Cytat(!*! @ 22.07.2013, 09:58:49 )

A jak będziesz chciał kasować np. posty z forum który ma widok wspólny dla użytkownika i będziesz chciał coś zmienić to będziesz poprawiał to w 2ch plikach? Model jest jeden,wspólny i tylko on, ewentualnie widok, to kontroler wszystkim steruje jak wskazuje jego nazwa i może być on osobny (a nawet powinien) dla panelu.
Fajnie, wspólny model rozwiązuję po części moje problemy z organizacją kodu.
Nie do końca rozumiem przykład z kasowaniem postów...
Czy takie funkcjonalności jak upload plików należy umieszczać w modelu, czy w oddzielnej klasie i rozszerzać klasę modelu o klasę np. UploadFile?
Zarządzanie plikami, a model który ma kasować pliki to osobne klasy. Załóżmy że masz blog z panelem admina, w nim kasujesz komentarze, ale przykładowo wychodzisz poza panel i przeglądasz komentarze bezpośrednio we wpisie i tam masz link do kasowania jako że jesteś zalogowany jako admin. To przecież nie zrobisz osobnego kasowania w komentarzach i osobnego w panelu...
thek
22.07.2013, 21:17:33
ACL, ogólnie system uprawnień, routing czy tego typu rzeczy, które faktycznie są pewnym trzonem używanym niezależnie od tego gdzie jesteśmy, to właśnie Core. Jeśli jest ona w miarę niezależna i nie potrzebuje wstrzyknięć, wydzielasz to jako bibliotekę, lub jeśli jest malutkie, ewentualnie helper.
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.