Po skonfigurowaniu aplikacji czas, żeby efekty naszej pracy w końcu zaczęły być widoczne. Czas na pierwszy kontroler!

Zaczynamy

Aby napisać swój pierwszy kontroler należy wejść do katalogu /application/controllers/. Tam, jak pisaliśmy już w rozdziale Struktura i nazewnictwo znajdują się wszystkie kontrolery naszej aplikacji.

Obecnie z pewnością widzisz 2 pliki, welcome.php oraz examples.php. Są to kontrolery predefiniowane przez zespół rozwojowy Kohany po to, abyś mógł sam lepiej zrozumieć i rozeznać się w szkielecie aplikacji. Ten pierwszy służy do wyświetlenia strony startowej, którą widzisz bezpośrednio po zainstalowaniu Kohany (i usunięciu pliku install.php z głównego katalogu). Drugi zaś odpowiada za wyświetlenie strony z przykładami (jest ona dostępna pod adresem http://localhost/kohana/index.php/examples, jeżeli instalowałeś Kohanę w nadrzędnej ścieżce swojego serwera HTTP, w podkatalogu /kohana). Oba te kontrolery nie będą nam potrzebne, ale warto je zachować na później (być może jakieś przykładowe rozwiązanie okaże się w przyszłości pomocne).

Standardy tworzenia kontrolerów

Z przytoczonego wcześniej rozdziału Struktura i nazewnictwo musisz zapamiętać, że:

  • nazwa pliku musi być zapisana małymi literami, np. artykuly.php;
  • nazwa kontrolera musi się pokrywać z nazwą pliku , dodatkowo kończy się sufiksem _Controller (np. Artykuly_Controller). Pierwsze litery wyrazów są duże, pozostałe małe;
  • musi dziedziczyć po klasie Controller bądź jednym z jego potomków;
  • standardowo wywoływana jest funkcja index (jeśli nie podano inaczej).

Napiszmy coś wreszcie!

Pierwszy kontroler będzie odpowiadał za wyświetlenie strony głównej naszego bloga. Jeżeli czytałeś rozdział Instalacja i konfiguracja wiesz już, że istnieje taki plik konfiguracyjny jak routes.php, a w nim przechowywana jest linijka dotycząca kontrolera domyślnego (czyli nazwy kontrolera, który zostanie wywołany przy bezpośrednim otwarciu strony głównej naszej aplikacji w przeglądarce internetowej). Dla naszych potrzeb głównym kontrolerem, który będzie wczytywany domyślnie jako pierwszy będzie kontroler o nazwie home. Dlatego też należy dokonać zmiany wpisu, z postaci obecnej:

1
$config['_default'] = 'welcome';

Do postaci:

1
$config['_default'] = 'home';

Teraz, po odświeżeniu strony zobaczymy błąd. Jest on jednak w pełni uzasadniony – nie ma kontrolera o nazwie home, którego przy odświeżeniu witryny szukał przed chwilą skonfigurowany przez Ciebie router. Jeżeli go nie ma – stwórzmy go!

Kontroler strony głównej – “home”

Tworzymy zatem kontroler o nazwie pliku home.php, który ma poniższą zawartość:

1
2
3
4
5
6
7
8
9
<?php defined('SYSPATH') OR die('No direct access allowed.');
 
class Home_Controller extends Controller {
 
	public function index()
	{
		echo 'Witam - jestem Kohany(m) kontrolerem! :)';
	}
}

Odśwież teraz stronę… Tak – kontroler zadziałał. W Kohanie kontrolery mapowane są jak podstrony – dlatego ten sam kontroler zadziała, kiedy wpiszesz http://localhost/kohana/index.php/home. Teraz nie musiałeś tego robić, ponieważ ustawiłeś router, który przy domyślnym wywołaniu ($config['_default'] – patrz lekko powyżej) ma za zadanie wywołać kontroler home.

Akcja kontrolera, jej sposób prezentacji i przyjmowanie parametrów

Zmodyfikuj kontroler home.php do poniższej postaci:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php defined('SYSPATH') OR die('No direct access allowed.');
 
class Home_Controller extends Controller {
 
	public function index()
	{
		echo 'Witam - jestem Kohany(m) kontrolerem! :)';
	}
 
	public function podstrona($parametr1, $parametr2)
	{
		echo 'Witam - jestem kontrolerem podstrony.
			<br />Przyjąłem 2 parametry:
			<ul>
				<li>Pierwszy: '.$parametr1.'</li>
				<li>Drugi: '.$parametr2.'</li>
			</ul>';
	}
}

Co zrobiliśmy? Otóż dodaliśmy funkcję kontrolera (w nomenklaturze MVC częściej na funkcję w kontrolerze mówi się “akcja”), która ma za zadanie wyświetlić prosty tekst oraz zawartość dwóch przyjmowanych przez siebie parametrów. Parametry te przyjmowane są z URL’a (definiowane jako kolejne segmenty adresu). Jak więc obecnie wygląda URL tej akcji? Zobaczmy: http://localhost/kohana/index.php/home/podstrona/pierwszy_parametr/drugi_param.

Epilog

Nie przejmuj się nieładnym URL’em. Niedługo poznasz technikę “wycinania” index.php z adresu Twojej strony, dzięki czemu uzyskasz bardziej przejrzystą i elegancką strukturę adresu.

Wzorzec projektowy MVC nie pozwala nam na to, abyśmy w kontrolerze wykonywali funkcję echo (nigdy nie należy tego robić – niniejszy kod jest tylko tymczasowym przykładem, natomiast do wyświetlania tego typu napisów służą widoki). Dlatego też dalszą część tworzenia naszego prostego systemu blogowego będziemy prowadzić w dalszych rozdziałach. Tam wykorzystamy widoki, a później modele. Tak, by kod naszego bloga był w pełni zgodnym ze wszystkimi najważniejszymi standardami, zasadami i dyrektywami inżynierii oprogramowania.

Kod źródłowy, użyty do tego artykułu, zajduje się tutaj.