Ścieżki i nazwy kontrolerów
Kontroler musi mieć nazwę odpowiadająca strukturze autoloadera, czyli dla klasy o nazwie "adminMainController" nazwa pliku musi wygldać tak: "adminMainController.class.php". Kontrollery znajdują się w ścieżce albo /app/controller/ albo wewnątrz danego pluginu czyli /app/plugins/NASZ_PLUGIN/controller/ dozwolone są też podścieżki dla folderu controller, a są to odpowiednio /do oraz /ajax. Tylko z tych ścieżek system będzie pobierał kontrollery dostepne w naszym systemie.
Struktura pliku kontrollera
Kontroler jest zakodowany w obiektowym PHP dlatego dziedziczy po określonych klasach, nie musi rzecz jasna dzedziczyc po niczym jednak dla wygody przyjmuje się pewien standard wynikający z WinduCOREClass simpleController Extends htmlController { public function index() { $pagesDB = new pagesDB(); $this->smarty->assign('pagesDB',$pagesDB); $this->pageDisplay('main.tpl'); } }
Jak widzimy nasz simpleController jest roszeżany przez htmlController który dodaje obsługę smartów i pozwala na wyświetlanie plików tpl, w naszym prostym kontrolerze stworzyliśmy uchwyt do tabeli $pagesDB i zwróciliśmy go do szablonu main.tpl w którym dalej możemy wykrozystywać nasz obiekt tabeli.
Extendowanie kontrolera oraz ustawianie ścieżek
Ważne jest zdefiniowanie folderu z którego system ma pobierać templaty, jeżeli tworzymy własny plugin to folder ten ma być folderem templates w strukturze folderów pluginu. W celu zdefiniowania własnych ścieżek należy Extendować nasz kontroller kontrollerem pośrednim, można rzecz jasna zrobić to w tym samym pliku jednak będzie to niewygodne przy większej liczbie plików.W tym celu tworzymy nowy kontroler "simpleMainController" i extendujemy nasz podstawowy.
Class simpleController Extends simpleMainController { public function index() { $pagesDB = new pagesDB(); $this->smarty->assign('pagesDB',$pagesDB); $this->pageDisplay('main.tpl'); } }
Kontroler "Main" po jakim exdendować będziemy wszytskie kontrollery naszego pluginu
Class simpleMainController Extends htmlController { public function __construct(request $request) { parent::__construct($request); cron::run(); lang::set('front'); } public function smartyGo() { parent::smartyGo(); $this->smarty->template_dir = array_merge(array(__SITE_PATH . '/app/plugins/wp/templates/'),$this->smarty->template_dir); $this->smarty->left_delimiter = "{"; $this->smarty->right_delimiter = "}"; $this->smarty->setCaching(config::get('cache')); $this->smarty->setCacheLifetime(config::get('cacheLife')); $this->smarty->assign('TEMPLATE_HOME',HOME.'/app/plugins/wp/templates/'.$template); $this->smarty->assign('TEMPLATE_PATH',__SITE_PATH . '/app/plugins/wp/templates/'); } public function index(){} }
W przypadku tworzenia nowego kontrollera poelcamy wzorować się na jednym z już gotowych