Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej Rozumiem

Controller

Kontroler jest wywoływaney z poziomu routera i to tam definiujemy jaki kontroler w zależnościu od ścieżki ma się wywołać.


Ś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 WinduCORE
 
Class 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

Centrum pomocy

Masz problem techniczny?

Poradniki wideo