Конфигурирование — Часть 1

Комментарии: 20  Просмотры: 48 878

Перед использованием Кохану необходимо настроить. Небольшие настройки мы уже произвели, они касались присутствия index.php в адресной строке. Для начала давайте пройдемся по файлу bootstrap.php, который находится в папке application. Первая настройка, которую мы сделаем в этом файле, касается временной зоны. Найдите следующие строчки:

/**
 * Set the default time zone.
 *
 * @see  http://kohanaframework.org/guide/using.configuration
 * @see  http://php.net/timezones
 */
date_default_timezone_set('America/Chicago');

Кохана очень хорошо комментирована (правда на английском и некоторых это очень расстраивает). И здесь, если перейти по второй ссылке в комментарии, можно увидеть полный список поддерживаемых временных зон. Если вы не из Америки, пропишите нужную, например, Europe/Moscow.

Следующее, что нам нужно, — это установка локали по умолчанию:

/**
 * Set the default locale.
 *
 * @see  http://kohanaframework.org/guide/using.configuration
 * @see  http://php.net/setlocale
 */
setlocale(LC_ALL, 'en_US.utf-8');

Опять же, за дополнительной информацией по поводу локали, переходим по ссылкам в комментарии.

В принципе эти настройки можно и не трогать или настроить их позже. Иметь правильное время — это конечно хорошо, но крайне необходимо иметь рабочие URL — адреса, ведь без них посетители никогда не смогут посмотреть ваше приложение. Поэтому пока пропускаем настройки вроде языка по умолчанию (тем более, что это пока ни на что особо не влияет) и переходим к очень важным настройкам — настройкам URL. Тем более, что мы их уже производили. Это уже знакомый нам статический метод инициализации — Kohana::init, который в качестве параметра принимает ассоциативный массив с парой ключ-значение. Если вы выполняли все мои рекомендации, то выглядеть он должен следующим образом:

/**
 * Initialize Kohana, setting the default options.
 *
 * The following options are available:
 *
 * - string   base_url    path, and optionally domain, of your application   NULL
 * - string   index_file  name of your index file, usually "index.php"       index.php
 * - string   charset     internal character set used for input and output   utf-8
 * - string   cache_dir   set the internal cache directory                   APPPATH/cache
 * - boolean  errors      enable or disable error handling                   TRUE
 * - boolean  profile     enable or disable internal profiling               TRUE
 * - boolean  caching     enable or disable internal caching                 FALSE
 */
Kohana::init(array(
    'base_url'   => '/',
    'index_file' => FALSE
));

Ну а если у вас по другому, то исправьте это. Больше здесь трогать пока ничего не нужно, разве что можно изменить параметр base_url (базовый URL), но это только в том случае, если у вас сайт находится в подпапке. В этом случае нужно также поменять значение RewriteBase в файле .htaccess.

Переходим к настройкам окружения:

/**
 * Set Kohana::$environment if a 'KOHANA_ENV' environment variable has been supplied.
 *
 * Note: If you supply an invalid environment name, a PHP warning will be thrown
 * saying "Couldn't find constant Kohana::<INVALID_ENV_NAME>"
 */
if (isset($_SERVER['KOHANA_ENV']))
{
    Kohana::$environment = constant('Kohana::'.strtoupper($_SERVER['KOHANA_ENV']));
}

Что это такое и для чего оно нужно. Очень часто во время разработки приложения нам нужны определенные функции, которые нежелательны, когда проект выложен в сеть. Например вывод какой-то информации или сообщений об ошибках. В Кохане можно быстро переключаться между режимами разработки, в зависимости от окружения. Добавьте перед условием строку Kohana::$environment = Kohana::DEVELOPMENT;. Таким образом мы перевели Кохану в режим разработки. С фреймворком идут следующие четыре константы: PRODUCTION, STAGING, TESTING и DEVELOPMENT. Т.е. готовый проект, подготовка, тестирование и разработка. Мы выбрали DEVELOPMENT, поскольку только начинаем разработку. Перед установкой готового проекта на рабочий сервер, не забудьте поменять значение на PRODUCTION.

<< Назад | Вперед >> | Обсудить на форуме


К записи оставлено 20 коммент.

Не понятно где конкретно нужно добавить строку [code]Kohana::$environment = Kohana::DEVELOPMENT;[/code]

над
if (isset($_SERVER['KOHANA_ENV']))
прямо и пишите

Изменил все рекомендации по поводу удаления index.php все равно не работает

т.е. прописали в массиве ‘index_file’ => FALSE и переименовали example.htaccess в .htaccess и не работает ?
а что пишет ?

все понял что не так было, просто нужно было в htaccess править RewriteBase /kohana/ у меня просто в корне сервера кохана в папке лежит :) )

да и Вы бы перенесли вот это в раздел первые шаги а то некорректно как то получается

Ну а если у вас по другому, то исправьте это. Больше здесь трогать пока ничего не нужно, разве что можно изменить параметр base_url (базовый URL), но это только в том случае, если у вас сайт находится в подпапке. В этом случае нужно также поменять значение RewriteBase в файле .htaccess.

Просто обычно это никто не делает. Это здесь я запихнул тоже в
http://kohanaframework.su/kohana/
потому что основной урл занят.

Всем привет. А никто не знает почему на странице не кириллица отображается ересью? Пробовал менять setlocale(LC_ALL, ‘en_US.utf-8′); на setlocale(LC_ALL, ‘ru_RU.utf-8′);, комментировать эту строку, посылать заголовок: header(‘Content-type:text/html;charset=utf-8′);Так же пробовал устанавливать windows-1251 для теста. Результат один и тот же. Русскоязычные символы на странице не отображаются.

Возможно сама страница сохранена не в утф8

Вопрос исчерпан, просто у меня в PHP Designer по умолчанию текст писался в кодировке windows-1251, пересохранил всё заработало.

Ну как я и предполагал :)
Удачи.

У меня нету
/**
* Set Kohana::$environment if a ‘KOHANA_ENV’ environment variable has been supplied.
*
* Note: If you supply an invalid environment name, a PHP warning will be thrown
* saying «Couldn’t find constant Kohana::»
*/
if (isset($_SERVER['KOHANA_ENV']))
{
Kohana::$environment = constant(‘Kohana::’.strtoupper($_SERVER['KOHANA_ENV']));
}
такого в файле, вообще :( что делать ?

ничего не трогать

if (getenv(‘KOHANA_ENV’) !== FALSE)
{
// Kohana::$environment = Kohana::DEVELOPMENT;
Kohana::$environment = constant(‘Kohana::’.strtoupper(getenv(‘KOHANA_ENV’)));
}
Нужно сделать вот так? т.е. убрать // или ещё и удалить след строку ?

Откуда такие строки? Надо так:

Kohana::$environment = Kohana::DEVELOPMENT;
if (isset($_SERVER['KOHANA_ENV']))
{
Kohana::$environment = constant(‘Kohana::’.strtoupper($_SERVER['KOHANA_ENV']));
}

Здравствуйте Дмитрий!

У меня проблема с кодировкой.

Кохана почему то при привязке массива к представлению, тобишь в контроллере авторизации, впереди контента добавляет BOM символы — п»їп»ї.

Сам контроллер

bind(‘message’,$message);

// Если отправляем форму то есть автиризируемся
if ($_POST)
{
// Тримим все поля формы
$_POST = Arr::map(‘trim’, $_POST);
// Проверяем на заполнение всех полей
$post = Validation::factory($_POST);
$post -> rule(‘username’, ‘not_empty’)
-> rule(‘password’, ‘not_empty’)
-> rule(‘username’, ‘min_length’, array(‘:value’, 3))
-> rule(‘username’, ‘max_length’, array(‘:value’, 50))
-> rule(‘password’, ‘min_length’, array(‘:value’, 3))
-> rule(‘password’, ‘max_length’, array(‘:value’, 50));

// Создаём метки для наименований полей при ошибке валидации
$post->labels(array(‘username’=>’Логин’,'password’=>’Пароль’));

// Производим проверку
if($post->check())
{

$username = Arr::get($_POST, ‘username’);
$password = Arr::get($_POST, ‘password’);
// авторизируемся
if(Auth::instance()->login( $username, $password ))
// Если все окей переходим в админку
Request::current()->redirect(‘admin’);
else
// иначе выводим сообщение об ошибке
$message=’Авторизаци не прошла. Неверный логин или пароль’;
}
else
{
// если не прошла валидация записывае массив с ошибками в представление
$errors = $post -> errors(‘validation’);
$content->bind(‘errors’,$errors);
}
}
// Выводим форму авторизации с описанием ошибок, если авторизация не прошла
$this->response->body($content);

}

/*
Выход пользователя
*/
function action_logout()
{
Auth::instance()->logout(true);
Request::current()->redirect(‘auth/login’);
}

} // End Main

А вот представление

Bestfuns Авторизация

Bestfuns Авторизация

Логин:
<input id="username" type="text" name="username" value="» />

Пароль:

Вход

Припервой загрузке страница отображается нормально, но когда отправляешь форму на сервер, и передаешь ошибки валидации

$errors = $post -> errors(‘validation’);
$content->bind(‘errors’,$errors);

в начало контента записываются двоичные символы кодировки BOM — п»їп»ї. В результате этого страница отображается коряво.

Как решить эту проблему? Почему Кохана добавляет в начало эти символы? Все файлы проекта у меня в кодировке UTF-8 без BOM

Денис, прежде всего спасибо тебе за этот ресурс, много нового для себя узнал по фреймворку.
Подскажите, пожалуйста, в чем может быть косяк. У меня сайт ipc-pilot.com. Сделан на фреймворке kohana. На некоторых страницах (в том числе на главной) перед содержанием и после содержания непонятные символы появляются. Не могу понять в чем причине.

Ну это код надо смотреть. Так трудно сказать.

В 3.3.х DEVELOPMENT стоит по умолчанию.
Все остальные режимы включаются после того как



Оставить комментарий или два

Пожалуйста, зарегистрируйтесь для комментирования.