class Index_Controller extends Controller { public function __construct(){ parent::__construct(); $this->template=new View('layout'); $this->template->headers=new View('header'); $this->template->footer=new View('footer'); $this->template->headers->title = 'Samochody świata'; $this->template->footer->copyright = 'Copyright'; $model=new Menu_Model; $wynik=$model->getmenu(); $this->template->set('menu',$wynik); } public function index(){ $this->template->content=new View('content'); $news=new News_Model; $wynik=$news->getnews(); $this->template->content->news=$wynik; $this->template->render(TRUE); } public function przegladaj($index) { $this->template->content=new View('przegladaj'); $auta=new Przegladaj_Model; $wynik=$auta->getAuta($index); $this->template->content->auta=$wynik; $this->template->render(TRUE); } public function news($index){ $this->template->content=new View('news'); $news=new News_Model; $wynik=$news->getnews($index); $this->template->content->news=$wynik; $this->template->render(TRUE); } }
Ogólnie mam layout ze nagłówkiem, stopką i zmienną zawartością, zależnie od tego w jaki kliknąłem link. Teraz chciałbym stworzyć taki link: http://localhost/index.php/index/przegladaj/auto/3 . Jak to zrobić? Jedyne co przychodzi mi na myśl to jakiś switch w funkcji przegladaj, tyle że gdybym potem chciał zrobić coś takiego z auto, będzie już problem.
Czy taki kontroler ma być tylko jeden na stronie? Jeśli nie to jakie mam pisać inne, i ogólnie jak to wszystko wtedy połączyć. Tworzenie modeli wydaje mi się póki trochę beznadziejne, bardziej przypominają opakowania na funkcje niż rzeczywiste klasy. Mimo iż w tych powyższych mam teraz tylko pobieranie danych z bazy, to potem mogę mieć co najwyżej wstawianie lub zaktualizowanie danych. Jakoś nie widzę innych rozwiązań.
Poprzednio korzystałem ze Smarty, i podobało mi się, że mając coś takiego : /przegladaj.php?auto=2 i takiego: /przegladaj.php?marka=3 robiłem sobie np. {if $smarty.get.auto} w szablonie i wyświetlałem co trzeba, jak mogę tutaj coś takiego zrobić, lub jakiś tego odpowiednik?