[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Начальный практикум в Kohana
Kuzya
Официальный сайт фреймворка: http://kohanaphp.com/
Русскоязычный сайт фреймворка: http://kohanaphp.ru/ (на данный момент крайне плохо проработан, лучше посещать официальный ресурс)
Версия фреймворка на момент написания статьи: 2.3.2

К сожалению редактор не позволяет создавать структурированный текст, из-за чего большие части кода порой трудно читаются. В этом случае рекомендую Вам скачать PDF-вариант статьи: <a href=http://kuzya.name/files/kohana/practical_intro_kohana.pdf (22 страниц, шрифт Times New Roman, 12pt).

Здравствуйте. Данная статья, как и все остальные из этой серии, ориентирована на людей которые умеют пользоваться документацией и хотя бы в малой степени с ней ознакомились. Англоязычное описание фреймворка построено довольно хорошо и понятно. По моему можно даже не знать английского языка, а руководствоваться примерами которые приводят авторы. Многие моменты в статье описываться не будут так как уже описаны в документации. В тексте статьи я постарался выставить ссылки на определённые разделы руководства везде где могут возникнуть вопросы. Вообщем, проблем быть не должно. А если Вы ранее работали с Code Igniter, то постигнуть Kohana не составит никакого труда. Ведь это прямой потомок CI, модернизированный и лишённый многих недостатков.
Думаю стоит отметить что в статье я немного отступаю от стандартов разработки кода в Kohana. В каждый файл разработчики рекомендуют встраивать следующий код.

PHP
defined('SYSPATH') OR die('No direct access allowed.');


Я его не встраиваю. Просто из привычки. К тому же мне кажется что ничего плохого от этого нет. Вы же можете поступать как захотите.
Ниже я опишу использование базовых инструментов Kohana на примере создания сайта компании торгующей своим программным продуктом (в качестве подопытного будет программа Bred 3). Сайт будет крайне простой и незамысловатый. Состоять он будет из следующих частей:
1. Главная страница с новостями
2. Страница скриншотов программы
3. Раздел оформления заказов
4. Гостевая книга
5. Раздел загрузки программы
В процессе написания ресурса мы постараемся задействовать как можно больше полезных компонентов фреймворка.

1. Подготовка
Первым делом скачайте свежую версию фреймворка. Что интересно, при скачивании Вы можете указать какие модули, библиотеки и языки включать в будущий архив. Дистрибутив, который я использовал при написании этой статьи, не включал в себя никаких дополнительных модулей кроме Archive. Из библиотек я выбрал только SwiftMailer. Ну и в варианте языков кроме английского был выбран русский. После скачивания распакуйте архив на "чистый" хост (у меня он называется kohana, у Вас он может иметь другое имя, учитывайте это в будущем) и обратитесь к нему через браузер. Обращаться следует именно в корень хоста, а не к файлу install.php. Никаких проблем возникнуть не должно и в низу страницы появится надпись "Your environment passed all requirements. Remove or rename the install.php file now." гласящая о том что всё хорошо. Удалите файл install.php и откройте example.htaccess для редактирования. В нём строку

RewriteBase /kohana/

измените на

RewriteBase /

После чего переименуйте файл в .htaccess. Этим мы включили использование mod_rewrite для красивого вида URL. Теперь пройдите по ссылке http://kohana/welcome/index. Браузер должен отобразить страницу приветствия. Если бы мы не производили вышеописанные манипуляции с .htaccess то тоже самое обращение выглядело вот так http://kohana/index.php/welcome/index. Полную информацию по установке фреймворка Вы найдёте тут: http://docs.kohanaphp.com/installation и тут http://docs.kohanaphp.com/installation/troubleshooting (на случай если возникнут какие-то проблемы).
Так же нам нужно немного подчистить конфигурацию от значений по умолчанию. Откройте файл /application/config/config.php. Нас интересуют параметры site_domain и index_page. Из комментариев понятно что первый параметр содержит директорию в которой установлена Kohana. Его значение можно либо вообще удалить, либо заменить на одиночный слэш (корень сайта). Второй параметр обозначает индексный файл фреймворка. Так как мы с помощью .htaccess избегаем использования index.php при обращении к сайту, значение этой ячейки тоже нужно очистить. Если этого не сделать то при автоматической генерации ссылок (например при разбитии материала на страницы) это всплывёт и будет серьёзно мешать. Вообщем, придётся изменять в любом случае.
Теперь займёмся базой данных. Создайте у себя на сервере базу с любым именем. Затем выполните в ней код из файла database.sql. Он создать 2 таблицы - kh_news и kh_gb. Они содержат информацию о новостях и отзывах в гостевой книге соответственно. Для того что бы фреймворк мог нормально к ней подключаться нужно указать необходимые настройки в файле /system/config/database.php. Изначально он имеет следующее содержимое:

PHP
$config['default'] = array
(
'benchmark'     => TRUE,
'persistent'    => FALSE,
'connection'    => array
(
'type'     => 'mysql',
'user'     => 'dbuser',
'pass'     => 'p@ssw0rd',
'host'     => 'localhost',
'port'     => FALSE,
'socket'   => FALSE,
'database' => 'kohana'
),
'character_set' => 'utf8',
'table_prefix'  => '',
'object'        => TRUE,
'cache'         => FALSE,
'escape'        => TRUE
);


Изменим содержимое массива "Connection", его ячейки user, pass, host и database. Подставьте туда свои данные. Вы могли заметить что таблицы у нас имеют префикс "kh_". Укажите его в ячейке "prefix" основного массива. Больше ничего менять не нужно. Более подробная информация по конфигурации БД располагается здесь: http://docs.kohanaphp.com/libraries/database/configuration.
Возьмёмся за локализацию. Если при скачивании дистрибутива Вы выбирали поддержку русского языка то в дирекотрии /system/i18n должна находится папка ru_RU с языковыми файлами. Зайдите в /system/config и откройте файл locale.php. В нём есть всего одна строка отвечающая за используемый язык. По умолчанию она настроена на работу с английским языком.

PHP
$config['language'] = array('en_US''English_United States');


Замените её на следующую

PHP
$config['language'] = array('ru_RU''Russian_Russian Federation');


Теперь фреймворк стал русскоязычным. Полная информация по интернационализации фреймворка - http://docs.kohanaphp.com/general/i18n
2. Дизайн
Все необходимые элементы дизайна находятся в соответствующем архиве. В корень хоста, туда где находятся папки application и system, скопируйте директорию images и файл стилей. Находящийся там же шаблон index.php скопируйте в папку application/views, откройте и разбейте на следующие части. Код находящийся с начала шаблона и до открывающего тега "body" поместите в файл header.php.

Код
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Начальный практикум в Kohana - http://kuzya.name</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link href="/styles.css" rel="stylesheet" type="text/css" />
</head>


За место него в основной шаблон поставьте код отображения переменной $header.

PHP
<?=


Далее поместите в файл menu.php код начинающийся сразу после комментария "start header" и до комментария "start page"

Код
<!-- start header -->
<div id="header">
<div id="logo">
<h1><a href="#">Metamorph_global</a></h1>
<h2><a href="http://www.metamorphozis.com/" id="metamorph">Design by Metamorphosis Design</a></h2>
</div>
<div id="menu">
<ul>
<li><a href="/">Главная</a></li>
<li><a href="/screenshots/">Скриншоты</a></li>
<li><a href="/buy/">Купить</a></li>
<li><a href="/gb/">Гостевая</a></li>
<li><a href="/download/">Скачать</a></li>
</ul>
</div>
</div>
<!-- end header -->
<hr />


На его место вставьте код отображения переменной $menu

PHP
<?=


Ну и всё начиная с комментария "start footer" и до конца файла перенесите в файл footer.php, поместив за место него соответствующий код.

PHP
<?=


Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.