Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: własny cms - pytanie o architekturę
Forum PHP.pl > Forum > PHP
marcus753
Witajcie,
w swoim życiu miałem okazje napisać kilka własnych cms-ów ale były to systemy bardzo proste bardziej projektowane do zarządzania już istniejącymi elementami na stronie niż dodawania nowych.

Przymierzam się do zaprojektowania portalu, założenie jest proste: chciałbym mieć kilka wzorców gdzie mam zdefiniowane (fizycznie) różne miejsca na stronie oraz n modułów które mogę przyporządkowywać pod każdy z nich i tu pojawia się problem jak to wsadzić we wzorzec MVC ? zazwyczaj miałem jeden kontroler który odpowiadał jednemu widokowi i korzystał z kilku modeli tutaj jednak takie zastosowanie nie przejdzie...
Dejmien_85
Cytat(marcus753 @ 12.03.2015, 12:41:15 ) *
Witajcie,
w swoim życiu miałem okazje napisać kilka własnych cms-ów ale były to systemy bardzo proste bardziej projektowane do zarządzania już istniejącymi elementami na stronie niż dodawania nowych.

Przymierzam się do zaprojektowania portalu, założenie jest proste: chciałbym mieć kilka wzorców gdzie mam zdefiniowane (fizycznie) różne miejsca na stronie oraz n modułów które mogę przyporządkowywać pod każdy z nich i tu pojawia się problem jak to wsadzić we wzorzec MVC ? zazwyczaj miałem jeden kontroler który odpowiadał jednemu widokowi i korzystał z kilku modeli tutaj jednak takie zastosowanie nie przejdzie...


Gdy tylko zdejmiesz klapki MVC z oczu, wtedy znajdziesz odpowiedź.

Wielu developerów straciło przez nie rozum - nie trać i Ty. ; )
PrinceOfPersia
haha, dokładnie. MVC jest dobre, jeśli pasuje. Jeśli nie pasuje do projektu, to się go nie stosuje, albo się dostosuje do siebie (zobaczcie, że nawet wiele frameworków webowych niby jest na MVC, a tak naprawdę nie do końca).


Cytat
i tu pojawia się problem jak to wsadzić we wzorzec MVC ?

Odwrotnie. To raczej wzorzec MVC powinno się dostosować do własnej aplikacji, a nie robić coś na siłę.
!*!
Cytat(marcus753 @ 12.03.2015, 12:41:15 ) *
zazwyczaj miałem jeden kontroler który odpowiadał jednemu widokowi i korzystał z kilku modeli tutaj jednak takie zastosowanie nie przejdzie...


A co ma MVC do aplikacji modułowej?
Forti
Ja to rozwiązałem tak, że każdy moduł ma swoje kontrollery, modele, widoki itp. Moduł dodaje wpis do bazy danych "o sobie" w stylu:

tabel: sections
- section a
- section b
- section c

i potem tylko ustalasz kolejność it. i w pętli ładuje renderuje controllery ;P co prawda prosty cms typu onepage, ale moge pisać nowe moduły jako "bundle" i te potem po prostu instalować. Rozwiązań jest masa, moje pewnie jest jedno z gorszych.
marcio
Cytat(Forti @ 13.03.2015, 10:13:44 ) *
Ja to rozwiązałem tak, że każdy moduł ma swoje kontrollery, modele, widoki itp. Moduł dodaje wpis do bazy danych "o sobie" w stylu:

tabel: sections
- section a
- section b
- section c

i potem tylko ustalasz kolejność it. i w pętli ładuje renderuje controllery ;P co prawda prosty cms typu onepage, ale moge pisać nowe moduły jako "bundle" i te potem po prostu instalować. Rozwiązań jest masa, moje pewnie jest jedno z gorszych.

Ja mam to rozwiazane bardzo podobnie mam front-controller ktory zajmuje sie ladowanie poszczegolnych kontrolerow modulow(u mnie komponentow) na podstawie uri wszystko mieli Router output tych komponentow wstrzykuje do glownego template-u gdzie mam bloki cos takiego jak w Twig-u.

Potem mam pluginy ktore rozszerzaja dzialanie komponentow typu komentarze, sondy lub download
Widgety sa uproszczonymi komponentami typu widget online albo wyszukiwarka.

Ogolnie poczytaj o HMVC.
marcus753
Dziękuję wszystkim za odpowiedź ! ok, trochę poczytałem o modelu HMVC co ciekawe phalcon bardzo fajnie wspiera ten wzorzec więc nie ma z nim problemu...

Skoro całą aplikację zamykam w modułach to podzielę sobie je na 2 grupy podstawowe i dodatkowe w podstawowych wykorzystuje zwykły wzorzec MVC gdzie mam wzorce dla frontendu i backendu natomiast w modułach dodatkowych mamy moduły które będę wstrzykiwali w te wzorce podstawowe.

Teraz tylko zastanawiam się jak z wykorzystaniem phalcona można wywołać w jednym kontrolerze inny kontroler razem z jego widokiem i zwrócić zawartość do głównego kontrolera który przekaże ją w zmiennej do swojego widoku.

Dobrze myślę ? czy wzorce podstawowe powinny być modułami ?

Pozdrawiam
Marcin Gębala
!*!
Chyba za bardzo się w tym pogubiłeś przez "moduły". Najlepiej jakbyś rozdzielił odpowiednio http://forum.php.pl/index.php?showtopic=34...mp;#entry409280

(H)MVC nie ma nic z tym wspólnego. Z tego co opisałeś, Tobie chodzi o coś na wzór haków znanych choćby z wordpressa. W kontrolerze pomiędzy modelem a widokiem robisz odwołanie do odpowiedniego haka(inny kontroler) za jego pomocą zmieniasz/generujesz dane i przekazujesz je do widoku.
marcio
Cytat(!*! @ 14.03.2015, 10:32:03 ) *
Chyba za bardzo się w tym pogubiłeś przez "moduły". Najlepiej jakbyś rozdzielił odpowiednio http://forum.php.pl/index.php?showtopic=34...mp;#entry409280

(H)MVC nie ma nic z tym wspólnego. Z tego co opisałeś, Tobie chodzi o coś na wzór haków znanych choćby z wordpressa. W kontrolerze pomiędzy modelem a widokiem robisz odwołanie do odpowiedniego haka(inny kontroler) za jego pomocą zmieniasz/generujesz dane i przekazujesz je do widoku.

HMVC ma i to duzo wspolnego z tym: http://fuelphp.com/docs/general/hmvc.html zreszta w kohana istnieje to samo, w yii nazywaja to modules a symfony chyba podobna role tworza bundle?!?

Haki?Mowisz o hookach/systemie eventow?To raczej co innego.

Nie wyobrazam sobie tworzenie aplikacji modulowej bez hmvc
Dejmien_85
Cytat(marcus753 @ 13.03.2015, 20:46:07 ) *
Teraz tylko zastanawiam się jak z wykorzystaniem phalcona można wywołać w jednym kontrolerze inny kontroler razem z jego widokiem i zwrócić zawartość do głównego kontrolera który przekaże ją w zmiennej do swojego widoku.


  1. $this->view->setVar('zmienna',
  2. $this->app->request(
  3. 'controller' => 'kontroler',
  4. 'action' => 'metoda',
  5. 'flag' => 'embeded' // jak sama nazwa wskazuje... ; )
  6. )
  7. );


PS Poczytaj sobie także o MVP (Model-View-Presenter), może się Tobie przydać. Polecam.
!*!
@marcio - czyli chodzi Ci o to żeby dopisać "kontroler" do osobnego pliku kernel/boostrap? Nie nazwałbym tego modułami... ehh grupa PSR powinna się tym zająć...
marcio
Cytat(!*! @ 18.03.2015, 08:47:12 ) *
@marcio - czyli chodzi Ci o to żeby dopisać "kontroler" do osobnego pliku kernel/boostrap? Nie nazwałbym tego modułami... ehh grupa PSR powinna się tym zająć...

Jesli cie dobrze zrozumialem to mniej wiecej tak, chodzi o frontcontroller ktory odpala kontrolery wszystkich poszczegolnych modulow.
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-2024 Invision Power Services, Inc.