Startujemy! Pierwszy kontroler
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.
