Poniżej przedstawiony jest sposób stworzenia najprostszego projektu w Kohanie.
Stwórzmy najpierw kontroler, który będzie wyświetlał napis “Hello world”. Później dostosujemy go do zasad modelu MVC.
W folderze application/classes/controller stwórzmy plik hello.php i wypełnijmy go następującym tekstem:
Class Controller_Hello extends Controller
{
function action_index()
{
echo 'hello, world! ';
}
function before()
{
echo 'Uruchamiam kontroler. '
}
function after()
{
echo 'Wyłączam kontroler. '
}
}
Żeby sprawdzić czy powstały kontroler działa wejdźmy w adres http://nasza-strona.pl/index.php/hello
Wyjaśnijmy po kolei cały powyższy kod:
<?php defined('SYSPATH') OR die('No Direct Script Access');
Ta linijka zabezpiecza plik przed bezpośrednim otworzeniem. Jedynie Kohana będzie miała do niego dostęp.
Class Controller_Hello extends Controller
Tu tworzymy instancję klasy Controller_Hello. Jej nazwa jest uzależniona od lokalizacji w jakiej znajduje się plik z nią. Przypomnijmy, że jest to application/classes/controller/hello.php, a więc na nazwę klasy zamieniamy wszystko w górę od katalogu classes. Przyjrzyjmy się innym przykładom:
- controller/user.php => Controller_User
- controller/user/login.php => Controller_User_Login
- model/options.php => Model_Options
- foo/bar/my/script.php => Foo_Bar_My_Script
function action_index()
Aby dana metoda była dostępna dla ludzi korzystających z naszego serwisu muszą być spełnione dwa warunki:
- Metoda musi być umieszczona w klasie, której nazwa zaczyna się od Controller. Implikuje to położenie pliku z klasą w folderze application/classes/controller
- Nazwa metody musi zaczynać się od ‘action_’. Wszelkie inne nazwy metod spowodują, że będą one traktowane jako prywatne i nie będą dostępne przez wpisanie odpowiedniego adresu URL.
Ponadto metoda o nazwie action_index wywoływana jest jako domyślna dla bieżącego kontrolera. A więc powyższa zostanie wywołana przez wpisanie w pasku URL http://nasza-strona.pl/hello/
Jeśli stworzylibyśmy metodę o nazwie powiedzmy action_user to wtedy wywołalibyśmy ją wpisując http://nasza-strona.pl/hello/user/
Można stworzyć też jak w powyższym przykładzie dwie metody o specjalnych nazwach before i after. Pierwsza z nich będzie wykonywana zaraz przed wywołaniem głównej akcji, a druga zaraz po niej.
Zastosujmy jednak model MVC
Kohana domyślnie dostarcza pomocniczy kontroler o nazwie Controller_Template – renderuje on naszą stronę korzystając z jednego z widoków. Pisząc poniższy przykład pominąłem już metody before i after:
<?php defined('SYSPATH') OR die('No Direct Script Access');
Class Controller_Hello extends Controller_Template
{
public $template = 'site';
function action_index()
{
$this->template->message = 'hello, world!';
}
}
Dzięki extends Controller_Template sprawiliśmy, że nasz kontroler będzie dziedziczył z tej klasy. Natomiast pisząc public $template = ’site’; powiedzieliśmy, że strona ma być renderowana wykorzystując widok site.
Możemy edytować zmienne jakie użyjemy w widoku zmieniając właściwości klasy template. Przykładowo pisząc jak w powyższym przykładzie $this->template->message = ‘hello, world!’; Przypisaliśmy do zmiennej $message wartość hello world!. Możemy ją użyć w widoku, który stworzymy.
Widoki umieszczamy w folderze application/views/. Przykładowo potrzebny do powyższego przykładu widok site będzie umieszczony w pliku application/views/site.php i miał następującą treść:
<html>
<head>
<title>Mam dla Ciebie wiadomość!</title>
<style type="text/css">
body {font-family: Georgia;}
h1 {font-style: italic;}
</style>
</head>
<body>
<h1><?php echo $message; ?></h1>
<p>I to by było na tyle :)</p>
</body>
</html>
Jak widzimy zawartość zmiennej message ustawionej w kontrolerze możemy wydrukować pisząc po prostu <?php echo $message; ?>