Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MVC part 2 kolejne pytanie :)
Forum PHP.pl > Forum > PHP > Object-oriented programming
atomp3
Witam

Sukcesywnie udaje mi sie wykorzystywac MVC dla mojej aplikacji. Aczkolwiek przyzwyczailem sie do czestego includowania plikow rodem ze Smarty. Chodzi mi np o header aplikacji.

Natomiast w MVC sprawa wyglada troszke inaczej, poniewaz dziala na zasadzie widokow. Do kazdego widoku dolaczany jest model. Kazdy widok to osobny katalog (przynajmniej tak jest w Frame. Joomla)

Teraz moje pytanie czy przy kazdym widoku musze powtarzac te same linijki kodu? np header? Bo troche nieelegancko bedzie inlcudowac np plik z katalogu wyzej smile.gif
Sedziwoj
Wyjaśnij mi dlaczego nie elegancko?
wlamywacz
A może po prostu zrobić to na zasadzie takiej:
  1. <?php
  2. class view {
  3.  
  4. public function __construct() {
  5.  
  6. $this->template = 'standard';
  7.  
  8. }
  9.  
  10. public function setTemplate($template) {
  11.  
  12. $this->template = $template;
  13.  
  14. }
  15.  
  16. public function setContent($content) {
  17.  
  18. $this->content = $content;
  19.  
  20. }
  21.  
  22. public function show($array = array()) {
  23.  
  24. $content = new Smarty();
  25. $content->templae_dir = FOLDER;
  26. $content->compile_dir = FOLDER . 'compile/';
  27. $content->cache_dir = FOLDER . 'cache/';
  28. $content->caching = 0;
  29. $content->error_reporting = E_ALL; 
  30. $content->assign( 'content' , $this->content);
  31. $content->assign( 'template' , $this->template);
  32. foreach ($array as $key => $arg) $content->assign( $key , $arg);
  33. $content->display($this->template.'/template.tpl');
  34.  
  35. }
  36. }
  37.  
  38. $arrayArg = array( 'zalogowany' => wlpanel::getLogined());
  39.  
  40. $this->view->setContent($this->view->news($this->news->getNewsForId($this->param3), $msg, $this->comments->getComments($this->param3)));
  41.  
  42. $this->view->show($arrayArg);
  43. ?>
atomp3
Cytat(Sedziwoj @ 28.07.2008, 16:45:20 ) *
Wyjaśnij mi dlaczego nie elegancko?


Poniewaz wszystko mam logicznie poukladane w katalogi i tak np Szukanie, Widok szczegolowy itd...

to juz chyba bardziej elegnacko bedzie wrzucic calosc do katalogu np Admin i tam luzem header.tpl i katalogi do dzialow np Admin/add_new potem includowac ten header smile.gif ale tak sie chyba nie da w Frame Joomli
wlamywacz
Zobacz na moje rozwiązanie, możesz w danej klasie wybrać sobie dany widok za pomocą funkcji:
  1. <?php
  2. $this->view->setTemplate('katalog/admin');
  3. ?>
LBO
Kolega szuka rozwiązania którym są layouty.

Layouty dostępne są w każdym szanującym się frameworku. Jest to szablon, który opakowuje widok akcji i powinna być możliwośc zdefiniowania go globalnie (dla wszystkich akcji) jak i selektywnego wyłączania.
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.