Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MVC oraz Kreator stron i newsów.
Forum PHP.pl > Forum > PHP > Object-oriented programming
KotWButach
Witam
Mam przynajmniej dla mnie bardzo niejasny problem. Otóż pisze sobie pewną aplikacje której właściwie do CMS-a niewiele brakuje więc powiedzmy że pisze CMS-a dla uproszczenia.
URL
domena.pl/strona
gdzie strona to kontroler we wzorcu MVC. Czyli standardowo.

Pojawił się problem którego nie wiem jak rozwiązać. Otóż większość CMS-ów posiada dynamiczne tworzenie stron start, kontakt, o firmie itd. Moje pytanie więc jest czy mam stworzyć kreator stron oparty na plikach czyli kontroler gdzie automatycznie bedzie dodawał się cały plik? Czy można to rozwiązać jakoś inaczej przy pomocy bazy danych ale nie wiem właśnie jak skoro url odpowiada kontrolerowi. sad.gif.

Będę wdzięczny za waszą pomoc smile.gif w zrozumieniu problemu.
destroyerr
Cytat
URL
domena.pl/strona
gdzie strona to kontroler we wzorcu MVC. Czyli standardowo.

Chyba stąd bierze się Twój problem. To nie ma związku z MVC. Faktycznie jest to jakiś nieformalny standard frameworków, ale nie dotyczy on samego MVC. Nazywa się to routing i nie koniecznie musi być to w formie podanej przez Ciebie (/strona => kontroler Strona). Wiele implementacji routingu pozwala na dowolne wzorce razem z elementami zmiennymi w tych wzorcach. Przykładowy wzorzec: /strona-statyczna/{title}, prowadzi do akcji StaticController::page($titlePage). Pasują do niego urle: /statyczna-strona/start, /statyczna-strona/kontakt, /statyczna-strona/o-firmie. Zadaniem kontrolera jest odebranie parametrów a urla i na ich podstawie pobranie odpowiedniego modelu (w Twoim przypadku będzie to strona).

Skorzystanie z frameworka powinno Ci pomóc w zrozumieniu tej kwestii, a pewni innych też.
KotWButach
Witam Cię dziękuje że odpisałeś. Staram się to pojąć właśnie, nie miałbyś może jakiś źródeł mogą być anglojęzyczne na temat różnych metod które opisałeś?
destroyerr
Ciężko mi cokolwiek polecać, zwłaszcza w temacie routingu. Pozostaje Ci google, albo jeszcze lepiej jak już napisałem frameworki i biblioteki. Czytanie ich dokumentacji i źródeł to moim zdaniem dobry pomysł. Nie musisz ograniczać się tylko do php.
pmfs
Podłącze się pod temat, bo sam założyłem podobny, ale może nie tak dobrze opisałem o co mi chodzi.

Moje pytanie o routing:
  1. /** Routing Info **/
  2. $FrontController = Zend_Controller_Front::getInstance();
  3. $Router = $FrontController->getRouter();
  4.  
  5. $route = new Zend_Controller_Router_Route(
  6. ':page',
  7. 'controller' => 'index',
  8. 'action' => 'view',
  9. 'page' => 1
  10. )
  11. );

Czyli wpisuje url:
strona.pl/4

I chciałbym tą liczbę przekazać do kontrolera, jak to zrobić?
KotWButach
Chyba trudny temat poruszyłem albo prosty?
Daiquiri
Cytat(KotWButach @ 3.08.2013, 01:05:04 ) *
Chyba trudny temat poruszyłem albo prosty?
Jeżeli dobrze widzę to szukasz routing regex. Na potrzeby zrozumienia możesz nawet zerknąć na takie cudo, chociaż pod podanym hasłem powinieneś znaleźć sporo bezpośrednich opisów i przykładów smile.gif.

Możesz też sięgnąć do książki, np. Pro PHP MVC, C.Pitt jest tam trochę o podstawach routingu.
destroyerr
Cytat
Chyba trudny temat poruszyłem albo prosty?

Temat prościutki, tylko nikt za Ciebie tego nie przerobi. Przecież jeżeli wpiszesz sobie w wyszukiwarce php routing, to dostaniesz mnóstwo wyników.
KotWButach
No tak ale nie tylko routing mi potrzebny nie mogę po prostu załapać koncepcji innego rozumowania niż (page == controller). Chodzi o to że jak system powinien rozpoznawać czy to co widzi to strona oraz z czym np statyczna, aktualności, galeria a może wszystko na raz. Jak to rozwiązać? Mamy sobie wordpress bleee ale mamy i tam można utworzyć aktualności, strony statyczne, galerię itd i nie łapie jak to się ma samo dziać biggrin.gif przy założeniu że (page != controller)
aniolekx
albo dla każdej strony stworzysz oddzielny kontroler który będzie wczytywał odpowiedni widok, albo zaimplementujesz kreator stron, w którym będziesz te strony definiował.
Ale bez stworzenia wizualnego kreatora, gdzie za pomocą klikania można definiować takie strony i trzymać te informacje w bazie i wydaje mi się to rozwiązanie bezsensowne.

Wiec pozostaje stworzenie kontrolera/widoków dla każdej z tych podstron.

Dla przykładu strona kontakt ma najczęściej formularz kontaktowy który musisz obsłużyć. Wiec w kontrolerze będziesz musiał mieć więcej akcji dla tej strony.

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.