Mam pytanie odnośnie klas widokowych we wzorcu MVC. Otóż załóżmy że posiadam kilka klas, dokładniej:
ProductModel.class <= zawiera pola odpowiadające kolumnom w DB, oraz funkcje ustawiające i pobierające,
ProductMapper.class <= zawiera funkcje operujące na ProductModel, takie jak zapis, aktualizacja, kasowanie, itp.
ProductView.class <= tutaj metody które umożliwiają np. przygotowanie do wyświetlenia tablicy produktów , oraz do wyświetlania np. stopki.
1. Czy "humanitarnie&" jest przekazywać w ten sposób np. $rs ( zestaw rekordów zwrócony przez funkcje getAllProducts() z klasy ProductMapper)?
<?php public function buildProductTable() { $rs = ProductsMapper::getAllProducts(); $this->tpl->setVar('rs', $rs); return $this->tpl->fetch('productList.tpl.php'); } ?>
Co w efekcie prowadzi do następującego kodu pliku szablonu który zwracam w buildProductTable()
<b>Lista produktow</b> <? while(!$rs->EOF) { $rs->MoveNext(); } ?>
Testując:
<?php ... $tpl = new Template('./themes/4'); $tpl->setVar('title', 'Yahoo.PL'); // nie zwracajcie na to uwagi:D $tpl->setVar('path', $tpl->templatePath); $product = ProductsMapper::getProductByName('Orange Striaghtener 5.1 oz'); $productView = new ProductView($tpl, $product); $tpl->setVar('product', $product); ... ?>
2. Rozwiązanie może nie najefektywniejsze , ale już teraz pomalutku przestaje mi się podobać. Rozchodzi się o te fragmenty kodu:
<?php ?>
Powstaje szablon bardzo słabo modyfikowalny, nie można tutaj przestawiać w rożne segmenty strony, tabelki produktów zbudowanej za pomocą buildProductTable(); , wiec wpadłem na pomysł (odkrywczy..., bądź nie..) aby zrobić taki trik
Kod
$tpl->setVar('listaProduktow', $productView->buildProductTable());
a następnie w dowolnym pliku szablonu , np. w 'contentCenter.tpl.php' wywołać <?=$listaProduktow;?>
Czy to jest sensowne posunięcie? Pomijając fakt, że na razie nie działa...
Pozdrawiam i czekam na konstruktywne odpowiedzi:)
moze ktos sie zainteresuje mym skromnym postem?
cos jest w nim nie tak?

EDIT Usuncie ten temat, widac ze nie ma zainteresowanych do konwersacji, a zbednie zawala mniejsce;)