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

Комментарии: 42  Просмотры: 38 977

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

/**
 * Enable modules. Modules are referenced by a relative or absolute path.
 */
Kohana::modules(array(
    // 'auth'       => MODPATH.'auth',       // Basic authentication
    // 'cache'      => MODPATH.'cache',      // Caching with multiple backends
    // 'codebench'  => MODPATH.'codebench',  // Benchmarking tool
    // 'database'   => MODPATH.'database',   // Database access
    // 'image'      => MODPATH.'image',      // Image manipulation
    // 'orm'        => MODPATH.'orm',        // Object Relationship Mapping
    // 'unittest'   => MODPATH.'unittest',   // Unit testing
    // 'userguide'  => MODPATH.'userguide',  // User guide and API documentation
    ));

Можно сделать это сейчас, если вы уже знаете, что вам понадобится, но лучше делать это в процессе разработки. Сюда же можно добавлять новые модули, например те, которые будут выкладываться у нас в разделе Модули или написанные самостоятельно. Пока здесь находятся все модули, которые идут в комплекте с Коханой и лежат в папке modules. Большая часть модулей требует определенной настройки. Все нужные модули и их настройки обязательно будут рассмотрены в процессе обучения. Пока можете раскомментировать последнюю строчку, в следующем разделе я расскажу зачем.

Конфигурационный файл

Когда вы создаете свое приложение, устанавливаете или создаете какие-то модули, у вас появляются какие-то данные, которые могут меняться. И вам естественно хочется хранить их где-то в одном месте и иметь возможность легко получать к ним доступ.

В папке application есть папка config. В этой папке вы можете создавать свои конфигурационные файлы и потом обращаться к ним. Давайте немножко поэкспериментируем. Создайте в папке /application/config/ файл с названием mysite.php и добавьте в него следующий код:

<?php defined('SYSPATH') or die('No direct script access');
return array(
    'title'       => 'Мой первый сайт на Кохане',
    'description' => 'Самый лучший сайт на свете'
);

Первая строчка — защита от прямого доступа к скрипту, хакеры теперь здесь не пройдут. Остальное — возврат массива с нашими данными. Теперь, чтобы получить доступ к этим данным, нужно использовать следующий код $site_config = Kohana::$config->load(‘mysite’). Будет произведен поиск файла с названием mysite.php в папке /application/config/ и если все в порядке, такой файл есть и в нем нет ошибок, то будет создан объект $site_config. Ну а чтобы получить сами настройки, используем метод get. Полностью код будет выглядеть так:

$site_config = Kohana::$config->load('mysite');
$title = $site_config->get('title');
$description = $site_config->get('description');

Можете проверить это, написав данный код в контроллере Welcome и добавив вывод echo $title . ‘ — ‘ . $description. Должна вывестись фраза Мой первый сайт на Кохане — Самый лучший сайт.

Можно вообще обойтись одной строчкой $title = Kohana::$config->load(‘mysite.title’) и echo $title тоже выведет нам заголовок.

Также можно использовать многомерные массивы:

<?php defined('SYSPATH') or die('No direct script access');
return array(
    'title'       => 'Мой первый сайт на Кохане',
    'description' => array(
        'main' => 'Самый лучший сайт на свете',
        'alt'  => 'Пока не будет создан второй сайт'
    )
);

И получать значения следующим образом:

$description_main = Kohana::$config->load('mysite.description.main');
$description_alt = Kohana::$config->load('mysite.description.alt');
echo $description_main . '<br>' . $description_alt;

Или еще вариант — использовать цикл foreach (особенно удобно передавать массив в Вид и там в нужном месте перебирать его с помощью этого цикла):

// Это Контроллер
$config = Kohana::$config->load('mysite'); 
 
// А это уже Вид
foreach ($config as $site_config)
{
    if(is_array($site_config))
        echo $site_config['main'] . '<br>' . $site_config['alt'];
    else
        echo $site_config . '<br>';	
}

Выведет три строчки:

Мой первый сайт на Кохане
Самый лучший сайт на свете
Пока не будет создан второй сайт

Код внутри цикла дан для примера. В Виде даже не вздумайте так писать :)

Таким образом видно, что вариантов работы с файлом конфигурации масса. Выбирайте такой, какой вам больше нравится.

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


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

Движки мозги не загружают и уводят от самого интересного ,мне сейчас приятнее вывести hello, world!
чем многофункциональный сайт на joomla который научился (создавать) быстро ,но он медленный ,можно сказать стандартный и хакерам недоступен потому что им не нужен )Kohana стараюсь понять,мне нравится этот фреймворк хотя, думаю что поначалу, сложновато, приходится заходить на php.su )

не совсем понял куда вносить
echo $title . ‘ — ‘ . $description ?

а всё понятно, там же в контроллере, просто при копировании с сайта одиночные ковычки ‘ php, превращаются в ‘

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

тогда может сразу что-то типа такого: (что бы не давать и повод думать про echo/print)

$site_config = Kohana::$config->load(‘mysite’);
$title = $site_config->get(‘title’);
$description = $site_config->get(‘description’);
$body =
hello, world!‘.
$title .»".
$description.»";
$this->response->body($body);

А где нужно поменять кодировку, ато у меня знаки вопросов выскакивают.

В каких случаях ? ПРи выводе из базы ?

Вообще, при выводе, вместо русских символов выводятся знаки вопросов.

Вообще Кохана изначально настроена под утф8. Возможно ваш редактор файлы сохраняет в виндоуз кириллице.

О, спасибо огромное)

А можно и так :)

# application/config/mysyte.php
# =============================

return array(
'title' => 'Second Skin',
'description' => array(
'title' => 'The art of be fashionable',
'show' => FALSE
)
);

# application/classes/controller/welcome.php
# ==========================================
$config = Kohana::$config->load('mysite');

$title = $site_config->get('title');
$description = $site_config->get('description.show') ? $site_config->get('description.title') : '';
$this->response->body($title . ($description ? ' — ' . $description : ''));

Тоже чисто в образовательных целях :)

Po4emu nelzya tak pisat’ v vide?

Потому что вид — это в основном верстка. А тут кода больше, чем верстки.

Куда именно вставлять этот отрывок кода

$site_config = Kohana::$config->load(‘mysite’);
$title = $site_config->get(‘title’);
$description = $site_config->get(‘description’);

в файле application/classes/controller/welcome.php ???

Да, написано же
«Можете проверить это, написав данный код в контроллере Welcome и добавив вывод …»

Тек, потихоньку начинаю понимать, скорее бы до вида дойти уже! Спасибо Денис, все заработало в с первого раза!

zdrastvuite, ya toka nachinau izuchat’ Kohanu, u menya vot takaya problema piwu v Welcome.php kod
$site_config = Kohana::$config->load(‘mysite’);
$title = $site_config->get(‘title’);
$description = $site_config->get(‘description’);
echo $title . ‘ — ‘ . $description.
a u menya owibka
«»,syntax error, unexpected T_VARIABLE, expecting T_FUNCTION, chto delat’?

в какой строчке ошибка-то ?

Здравствуйте! Та же проблема, что у предыдущего:
Создан файл mysite.php:
‘Мой первый сайт на Кохане’,
‘description’ => ‘Самый лучший сайт на свете’
);
прописал в контроллере Welcome.php:
load(‘mysite’);
$title = $site_config->get(‘title’);
$description = $site_config->get(‘description’);
echo $title . ‘ — ‘ . $description;
}

} // End Welcome
Получил ошибку:
ErrorException [ Parse Error ]: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION

APPPATH\classes\Controller\Welcome.php [ 4 ]
1 load(‘mysite’);
5 $title = $site_config->get(‘title’);
6 $description = $site_config->get(‘description’);
7
8 }
9

{PHP internal call} » Kohana_Core::shutdown_handler()

Сообщение о синтаксисе… Но вводил вроде все, как Вы прописывали…
Простите за «простоту»…

Вслед досылаю полный текст файла Welcome.php, может в нем ошибка:
load(‘mysite’);
$title = $site_config->get(‘title’);
$description = $site_config->get(‘description’);
echo $title . ‘ — ‘ . $description;
}

} // End Welcome

Не идет полный текст… Пробую еще…
class Controller_Welcome extends Controller {
$site_config = Kohana::$config->load(‘mysite’);
$title = $site_config->get(‘title’);
$description = $site_config->get(‘description’);
echo $title . ‘ — ‘ . $description;
}

Пишу в eclipse(linux); также столкнулся с проблемой: {PHP internal call} » Kohana_Core::shutdown_handler(); выяснилось, что eclipse не записывал файл mysite.php( не было прав для записи). Хотя даже не выводил сообщение о ошибке записи…

Хороший сайт, спасибо. Мне кажется слова view и controller не нуждаются в переводе.



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

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