Próbuję zrozumieć w jaki sposób budować aplikacje zgodnie z wzorcem MVC. Wszelkie działania na danych mam porozmieszczane w różnych klasach odpowiedzialnych za różne rzeczy. Korzystam z szablonów Smarty. Postanowiłem się pobawić i spróbować zbudować kontroler. No to zacząłem pisać:
<? class Kontroler { protected $get; protected $tpl; $this->get = $get; $this->tpl = new Smarty; $this->tpl->template_dir = '../templates/'; $this->tpl->compile_dir = '../templates_c/'; $this->$get['modul'](); } private function nowosci() { switch ($this->get['akcja']) { case 'wyswietl': $news = new News($this->get['id']); $pobrane = $news->pobierzNews(); $tpl -> assign('pobrane', $pobrane); $tpl -> display('admin-newsy-wyswietl.tpl'); } else { $newsy = new Newsy(); $pobrane = $newsy->pobierzNewsy($this->get['strona'], self::ILENASTRONE, $this->get['sortby']); $tpl -> assign('pobrane', $pobrane); $tpl -> display('admin-newsy.tpl'); } break; case 'dodaj': $tpl -> display('admin-newsy-dodaj.tpl'); break; case 'edytuj': $tpl -> display('admin-newsy-edytuj.tpl'); break; case 'usun': $news = new News($this->get['id']); if($news->usunNews()) { $msg = 'News usunięty poprawnie'; } else { $msg = 'Wystąpił jakiś problem przy usuwaniu newsa.'; } $tpl -> assign('msg', $msg); $tpl -> display('admin-newsy.tpl'); break; default: $tpl -> display('admin-newsy.tpl'); break; } } }
No i w tym momencie dosięgnęło mnie zwątpienie. Konkretnie w przypadku 'dodaj' i 'usuń'. Jeśli wartości 'moduł' i 'akcja' (np. nowosci -> dodaj) pochodzą z tablicy GET, wtedy oczekuję żeby aplikacja tylko i wyłącznie wyświetliła formularz dodawania (tak jak widać to na powyższym przykładzie). Co jeśli będę chciał wykonać samą akcję dodawania takiego newsa? Różnica będzie taka że dane te będę wysyłał w tablicy POST. Czy do tego typu działań powinienem stworzyć osobny kontroler? Osobne pliki wywoływane przez formularz? Pogubiłem się strasznie... Mam nadzieję że rozumiecie o co mi chodzi.

Pozdrawiam i z góry dzięki za odpowiedź.