Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MVC - wspólny kod html
Forum PHP.pl > Forum > PHP > Object-oriented programming
Ziels
Witam!

Dopiero uczę się MVC, czytałem tutorial do Zend Frameworka na php.pl i męczy mnie jedno pytanie:

Załóżmy że jest sobie jakiś duży serwis, najlepiej CMS. Taki CMS musi mieć dynamicznie generowane pozycje w menu na podstawie tego co jest w bazie danych, a to co się wyświetli w polu na treść jest zależne od tego jaką pozycje z menu wybierzemy. A więc - jeśli każdy kontroler odpowiada tylko za to co się pojawi w polu na treść to gdzie powinno się ustawiać pokazanie szablonu całej strony oraz generowanie pozycji menu? Bardzo chciałbym uniknąć rozwiązania w którym w każdej akcji każdego kontrolera musiałbym wywoływać widok odpowiedzialny za taki szablon. Przyjmuję również że musi być gdzieś panel administratora który może wyglądać "nieco" inaczej od reszty - jak rozwiązać tą kwestię? Kontroler odpowiedzialny za wyświetlanie takiego panelu powinien zmieniać widok ze standardowego na panel?
sf
Jak sobie to rozwiążesz to już Twoja sprawa. U mnie w każdej akcji (u Ciebie kontrolerze) mam ustawiony szablon strony, która ma być uruchomiony.

  1. <?php
  2. class Main extends aIdxAction
  3. {
  4. public function run(iRequest $oRequest, iResponse $oResponse)
  5. {
  6. //$oDB = HPDO::getInstance($this->sDSN); 
  7.  
  8. $oResponse->content = $oResponse->fetch($this->sModule . '/incMain.tpl');
  9. $oResponse->setTemplate('center.tpl');
  10.  
  11. return 0;
  12. }
  13. }
  14. ?>


Co do panelu i strony to u mnie są to dwie osobne jakby aplikacje, powiązane ze sobą tylko niektórymi elementami, ale na pewno nie widokami, ani konrolerami.
Kowalikus
W kontrolerze powinieneś móc zmieniać sobie layout np. $this->setLayout($nazwaLayoutu) i wtedy w zależności od kontrolera (zmieniasz layout w konstruktorze kontrolera) lub od akcji (zmieniasz layout w akcji czyli metodzie kontrolera). Co do elementów stałych możesz sobie napisać sobie coś takiego co w symfony nazywa sie Component'em i wtedy template menu wywołuje sam z siebie niezależnie od kontrolera akcję generującą elementy menu.
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.