Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Komponent eZ Template

Kod PHP

Jak już wspomniałem, skupimy się tylko na tych fragmentach kodu PHP w kontrolerze, które współdziałają z komponentem eZ Template i kontrolerem akcji.

Główny kontroler

System szablonów wywoływany (obsługiwany) jest przez dwie z metod kontrolera. W konstruktorze kontrolera odbywa się konfiguracja systemu szablonów. Metoda display() ładuje szablon, przekazuje mu aktualny kontroler akcji i ostatecznie wyświetla szablon.

Oto interesujący nas fragment konstruktora:

class tsGrcController
{

	// ...
 
     public function __construct()
     {
			// ...
 
            $eztConfig = ezcTemplateConfiguration::getInstance();
            $eztConfig->templatePath = dirname( __FILE__ ) . "/templates";
     			$eztConfig->compilePath = dirname( __FILE__ ) . "/templatesc";
	}
}

W tym przykładzie usunięty został kod odpowiadający za odczytanie akcji z parametru przekazanego w zapytaniu GET i utworzenie instancji odpowiedniego kontrolera akcji, składowanego później w prywatnej właściwości $action. Fragment kodu powyżej pokazuje konfigurację komponentu ez Template. ezcTemplateConfiguration::getInstance() zwraca obiekt konfiguracji szablonu, zaimplementowany jako singleton. Do tego obiektu przekazujemy informacje o ścieżce dostępu do katalogu z plikami szablonów i ścieżce dostępu do katalogu w którym zapisywane będą skompilowane szablony. Komponent eZ Template kompiluje szablony do postaci kodu PHP i w pamięci podręcznej zachowuje już skompilowane szablony. Szablony zostają automatycznie przekompilowane i zapisane jeżeli ich zawartość ulegnie zmianie w stosunku do ostatniej kompilacji. (Zwróć uwagę, aby katalog w którym zapisywane będą skompilowane szablony miał odpowiednio ustawione prawa zapisu).

public function run()
{
	$this->action->run();

	$template = new ezcTemplate();
	$template->send->action = $this->action;

	echo $template->process( $this->action->template . ".ezt" );
}

Powyższy fragment pokazuje metodę run() głównego kontrolera. Na początek uruchamiana jest po prostu metoda run() kontrolera akcji (co zostanie szczegółowo omówione poniżej). Następnie tworzona jest nowa instancja szablonu. W trzeciej linii, kontroler akcji przekazywany jest do szablonu. Zmienne przekazane do szablonu są później widoczne z poziomu kodu w szablonie. Do szablonu można przekazać dowolną liczbę zmiennych po prostu deklarując je jako kolejne właściwości atrybutu $send należącego do obiektu szablonu. Nazwa jaka zostanie nadana deklarowanej właściwości będzie nazwą pod jaką zmienna widoczna będzie w szablonie.

Ostatnia linia uruchamia parsowanie szablonu (wybranego przez kontroler akcji) i wyświetla wyniki. Jeżeli wybrany szablon znajduje się już w skompilowanej postaci w pamięci podręcznej ( cache) - zostanie uruchomiony. Jeżeli nie istnieje wersja skompilowana lub od czasu ostatniej kompilacji szablon został zmodyfikowany - szablon zostaje skompilowany i zapisany i ostatecznie wyświetlony.

Kontroler akcji

Spójrzmy teraz na kontroler akcji o którym wspomniałem wcześniej:

class ActionSearchdetails
{
      private $searchId;
 
      public $template = "searchdetails";
 
      public $title = "Szczegóły wyszukiwania";
 
      public $site;
 
      public $search;
 
      public $results;
 
      public function __construct()
	{
      	// ...
	}
 
      public function run()
      {
      	$this->search = tsGrcController::getSession()->load( 'Search', $this->searchId );
            $this->results = $this->search->getResults();
            $this->site = $this->search->getSite();
	}
}

W konstruktorze, który nie został tu pokazany, przetworzone zostały parametry wymagane dla akcji, szczególnie ID wyszukiwania które chcemy wyświetlić. Otrzymane ID wyszukiwania zachowane zostało w prywatnej składowej klasy $searchId. Na początku metody run() obiekt Search został pobrany z bazy i zachowany w publicznej składowej klasy - $search. Następnie wykonywane są kolejno metody obiektu Search w celu pobrania wyników wyszukiwania i strony dla której wykonujemy wyszukiwanie. Te dane również zachowane są w składowych publicznych kontrolera akcji.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (0)
Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2020 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System