Давно хотелось по плотнее взяться за фреймворк Kohana, тем более что сталкиваться с ним приходилось, а нормально по работать не удалось. Будем считать, что начнётся изучение с нуля, но базовые знания настроек Apache и программирования на php уже имеются. Так как линуксового сервера под рукой нет, то будем использовать WinXp с установленным XAMPP, но к линуксовому серверу вернёмся по позже, как я его до собираю (скорее всего будет ubuntu server).
У нас имеется XAMPP 1.7.3 установленный в c:\xampp
- Apache 2.2.14 c:\xampp\apache
- PHP 5.3.1 c:\xampp\php
- MySQL 5.1.41. c:\xampp\mysql
Начнём
Создадим в hosts запись
127.0.0.1 kohana.local
Для Apache создадим запись нашего виртуального хоста:
#NameVirtualHost kohana.local <VirtualHost 127.0.0.1> ServerAdmin webmaster@kohana.local ServerName kohana.local DocumentRoot c:/xampp/vhosts/kohana/webroot <Directory "c:/xampp/vhosts/kohana/webroot"> Options FollowSymLinks Indexes Includes execCGI AllowOverride All Order Allow,Deny Allow From All </Directory> AccessFileName .htaccess ErrorLog c:/xampp/vhosts/kohana/logs/error_log CustomLog c:/xampp/vhosts/kohana/logs/access_log common </VirtualHost>
В каталоге c:\xampp\vhosts создадим подкаталог kohana и в нём два подкаталога webroot - корневой каталог сайта и logs - каталог для логов сервера.
Теперь приступим к скачиванию и установке Kohana. Как скачать и распаковать дистрибутив написано множество руководств, по этому пойдём по другому пути возьмём исходники с >GitHub репозитария Kohana и устанавливать будем за пределами корневого каталога. У меня установлен TortoiseGit, последнюю версию которого можно взять с http://code.google.com/p/tortoisegit/
Запустим консоль и перейдём в c:\xampp\vhosts\kohana\
Последовательно ыполним следующие команды:
git clone git://github.com/kohana/kohana.git cd kohana/ git submodule init git submodule update
Через некоторое время мы имеем базовое текущей версии с официальными модулями.
Если какие-то модули не нужны, то после клонирования репозитария и до скачивая модулей можно открыть файл .gitmodules и удалить ненужный модуль. Например если нам не нужен userguide, то необходимо найти и удалить следующие строки:
[submodule "modules/userguide"] path = modules/userguide url = git://github.com/kohana/userguide.git
Настройка Kohana
Kohana скачан, но зайдя по адресу http://kohana.local мы видим унылую картину.
Скопируем из каталога с копией репозитария kohana файлы index.php и install.php в webroot.
Исправим в index.php пути к application, modules и system на следующие:
$application = '../kohana/application'; $modules = '../kohana/modules'; $system = '../kohana/system';
В application/bootstrap.php исправим: date_default_timezone_set('America/Chicago') на свою временную зону и setlocale(LC_ALL, 'en_US.utf-8') на свою локаль ('ru_RU.utf-8').
Снова пытаемся зайдя по адресу http://kohana.local
Если всё нормально, то удаляем install.php.
Скопируем из каталога репозитария файл example.htaccess, переименуем его в .htaccess.
Следующую строку можно удалить или заккоментировать, так как в нашем случае каталоги application, modules и system находятся за пределами DocumentRoot.
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
Обновив браузер мы увидим сообщение: "hello, world!" это строка от контроллера Controller_Welcome расположенного в application/classes/controller/welcome.php.
<?php defined('SYSPATH') or die('No direct script access.'); class Controller_Welcome extends Controller { public function action_index() { $this->request->response = 'hello, world!'; } } // End Welcome
Для начала расширим контроллер добавив к нему метод action_test():
public function action_test() { $this->request->response = 'Test message :)'; }
Если попытаемся увидеть наше сообщение по адресу http://kohana.local/test, то нас ждёт разочарование, ибо увидим только сообщение об ошибке. Это связанно с тем, что адрес формируется по следующему принципу:
http://example.com/index.php/<controller>/<action>или, без index.php в адресе:
http://example.com/<controller>/<action>Наш адрес будет: http://kohana.local/welcome/test/
Создание контроллера
Теперь попробуем создать свой первый контроллер для Kohana 3, для этого желательно ознакомиться с правилами создания контроллеров в Kohana 3:
- Контроллеры должны находится в (под-)каталоге
- Имя файла контроллера должно быть в нижнем регистре, например first.php
- Класс контроллера должен совпадать с именем файла, начинаться с заглавной буквы и иметь префикс Controller_, например Controller_First
- Контроллер должен иметь предком класс Controller или быть потомком контроллера с классом Controller
- Контроллер метод которого не объявлен публичным (public) и не имеет префикса action_ (например action_index()) не может быть определён через Route
- Вывод контроллера должен быть присвоен свойству $this->request->response
Начнём конструировать наш контроллер, назовём его First, соответственно имя класса будет Controller_First и имя файла first.php. Создадим метод вызываемый фреймворком по умолчанию и выведем строку 'Мой первый контроллер для kohana 3'.
<?php defined('SYSPATH') or die('No direct script access.'); class Controller_First extends Controller { public function action_index() { $this->request->response = 'Мой первый контроллер для Kohana 3'; } } //End
Строка defined('SYSPATH') or die('No direct script access.'); предотвращает прямое обращение к файлу контроллера, в нашем случае её можно убрать, так как файл контроллера расположен за пределами DocumentRoot и обратится к файлу на прямую не возможно.
Открыв в браузере http://kohana.local/first/ мы увидим сообщение "Мой первый контроллер для Kohana 3".
Расширим наш контроллер, но теперь добавим метод который способен получать параметр из URI:
public function action_dynamic($param) { $this->request->response = 'Параметр: '.$param; }
Откроем в браузере: http://kohana.local/first/dynamic/Тестовая%20строка
Должна отобразится строка: "Параметр: Тестовая строка"
На этом пока всё, продолжение будет в ближайшее время
P.S. За основу взяты материалы с Inside DealTaker и Unofficial Kohana 3.0 Wiki
Другие части руководства:
- Kohana 3: Установка под Ubuntu
- Kohana 3: Первые шаги (Установка и настройка)
- Kohana 3: Работа с отображениями
- Kohana 3: Работа с контроллерами
- Kohana 3: Работа с моделью
4 комментария:
Не знал, что RewriteRule в .htaccess можно закомментировать... И реально целый день рыл сеть в поисках ответа на вопрос, почему выдается ошибка 500...
Спасибо, что просветил ))
Доброе время суток. Я только начал знакомиться с Kohana, и начал я с вашей статьи. У меня есть пару вопросов. При установке в Optional Tests некоторые строки были выделены красным, могли ли из-за этого не работать параметры из URL, делал как вы но выдает ошибки. И, при $this->request->response у меня ничего не выводило, сделал как в action_index $this->response->body, в вашем случае может я что то упустил?
Начиная с Kohana 3.1 произошли довольно крупные изменения, в частности класс request был разделен на два класса request и response, в связи с этим способ вывода: $this->response->body('Текст')
После нового года постараюсь дописать руководство с изменениями.
Не могу разобраться почему ошибка выходит при Расширении контроллера, не получает он у меня параметр из URL
Отправить комментарий