Русскоязычный форум, посвященный фреймворку Kohana http://forum.kohanaframework.su/ |
|
Хранение настроек в БД http://forum.kohanaframework.su/viewtopic.php?f=33&t=212 |
Страница 1 из 2 |
Автор: | Malik [ 06 июн 2012, 09:48 ] |
Заголовок сообщения: | Хранение настроек в БД |
Здравствуйте. Хотел бы хранить все настройки в базе данных, дабы редактировать их из админки. Имеется таблица setting такого вида: Код:
Где key - это ключ и value - это значение. Без использования фреймворка, я бы сделал это так: Код:
Подскажите как лучше организовать хранение и вывод всех настроек в базе данных? |
Автор: | Migel [ 06 июн 2012, 19:07 ] |
Заголовок сообщения: | Re: Хранение настроек в БД |
Наверное надо получать эти данные в основном контроллере. Ну т.е. в контроллере вызов модели, которая получает эти настройки И в контроллере потом рассовываете. |
Автор: | qed [ 06 июн 2012, 22:35 ] |
Заголовок сообщения: | Re: Хранение настроек в БД |
Ну приведённый вами код с помощью query_builder можно переписать так: $results = DB::select()->from('settings')->execute(); $settings = $results->as_array('key', 'value'); В результате должен получиться массив с ключами из колонки key и значениями из колонки value. |
Автор: | Malik [ 07 июн 2012, 01:16 ] |
Заголовок сообщения: | Re: Хранение настроек в БД |
qed писал(а): Ну приведённый вами код с помощью query_builder можно переписать так: $results = DB::select()->from('settings')->execute(); $settings = $results->as_array('key', 'value'); В результате должен получиться массив с ключами из колонки key и значениями из колонки value. Ну с этим то понятно, но где это разместить? Понимаю, что в модели, но как вызывать эти настройки? |
Автор: | qed [ 07 июн 2012, 01:38 ] |
Заголовок сообщения: | Re: Хранение настроек в БД |
Например, в модели сделать метод, туда поместить эти строки и сделать return $settings; Из контроллера обратиться к этому методу можно так: $settings = Model::factory('model_name')->method_name(); Похожая ситуация описывалась в уроках на примере статей, там только другая выборка из базы. |
Автор: | Malik [ 07 июн 2012, 02:06 ] |
Заголовок сообщения: | Re: Хранение настроек в БД |
qed писал(а): Например, в модели сделать метод, туда поместить эти строки и сделать return $settings; Из контроллера обратиться к этому методу можно так: $settings = Model::factory('model_name')->method_name(); Похожая ситуация описывалась в уроках на примере статей, там только другая выборка из базы. И в каждом контроллере выбирать настройки? |
Автор: | qed [ 07 июн 2012, 02:45 ] |
Заголовок сообщения: | Re: Хранение настроек в БД |
Если эти настройки нужны будут во многих местах, то лучше всего, пожалуй, будет сделать статический класс - хранилище. В самом просто случае там будет свойство, например, $settings, и статические методы set() и get(). get будет обращаться к модели, которая будет делать выборку из базы и сохранять её в свойство $settings (массив с настройками). Перед этим надо будет только проверять, есть ли уже что-нибудь в $settings, если да, то обращаться к базе снова нет смысла, нужно брать настройки прямо оттуда. В таком случае запрос в базу будет отправляться только при первом обращении. Ну а метод set будет сохранять новые настройки в базу(через модель), и при этом обновлять $settings. Использование тогда может выглядеть примерно так: Settings::get('param1'); |
Автор: | Malik [ 07 июн 2012, 02:57 ] |
Заголовок сообщения: | Re: Хранение настроек в БД |
qed, спасибо, буду реализовывать. |
Автор: | admin [ 07 июн 2012, 19:34 ] |
Заголовок сообщения: | Re: Хранение настроек в БД |
Вам же уже написал кто-то выше, в базовом контроллере. http://kohanaframework.su/starting/base_controller Его наследуют все остальные контроллеры, следовательно настройки будут доступны везде. |
Автор: | Malik [ 29 авг 2012, 05:02 ] |
Заголовок сообщения: | Re: Хранение настроек в БД |
Не могу получить данные из модели в контроллере страниц. Базовый контроллер: Код:
Модель: Код:
Контроллер страниц: Код:
Подскажите почему он не доступен и как сделать доступным. |
Страница 1 из 2 | Часовой пояс: UTC + 4 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |