данные конфигурации хранятся в базе данных - PullRequest
5 голосов
/ 14 апреля 2011

Я, возможно, лаю совсем не на том дереве, так что простите, если это совсем не так, как я должен делать.

В моей базе данных есть таблица конфигурации, в которой хранятся детали конфигурациидля моего сайта.Я хочу загрузить эти данные в файл config.php для воспламенителя кода?

Это то, что я должен делать, или я совершенно не прав?

Если я помещу вызов базы данных вверху файла config.php, он будет вызываться каждый раз, когда кто-то загружает сайт или простов первый раз?

Извините, если это звучит совершенно глупо, я немного запутался.

Редактировать

Я не имею в виду детали базы данных, например хочу что-то сохранитькак количество сообщений, которые будут показаны на странице.Сценарий, который я создаю, должен использоваться более чем на одном сервере, например, количество сообщений на страницу должно быть редактируемым.Я мог бы загрузить это в сеанс, но я думал, что загрузка его как константа *?в файле конфигурации было бы лучшей идеей.

Ответы [ 3 ]

10 голосов
/ 23 октября 2011

Вот как я это делаю:

Во-первых, наша модель:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

.

class Prefs extends CI_Model
{
    function __construct()
    {
        parent::__construct();      
        $pre = array();
        $CI = &get_instance();

        if ($this->config->item("useDatabaseConfig")) {
            $pr = $this->db->get("settings")->result();     
            foreach($pr as $p)
            {
                $pre[addslashes($p->key)] = addslashes($p->value);
            }       
        }
        else
        {
            $pre = (object) $CI->config->config;
        }   
        $CI->pref = (object) $pre;      
    } 
}
  • Автоматическая загрузка этой модели.
  • в вашем config / config.php, добавьте эту строку (или другую пользовательскую, если вы ее используете): $config["useDatabaseConfig"] = true;

В вашей базе данных вам нужна таблица «настройки» со столбцами «ключ» и «значение».

Вот и все. С этой моделью вы можете установить, когда вы хотите использовать базу данных и когда вы продолжаете работать с файлами config / *. Php.

Скажем, вы можете изменить $config["useDatabaseConfig"] переменную прямо перед вызовом этого метода модели (тогда автозагрузка должна быть отключена).

Я получаю переменную для экземпляра CI только потому, что это проще и приятнее.
Прочитайте данные конфигурации следующим образом: $this->pref->sess_cookie_name

7 голосов
/ 14 апреля 2011

Вы можете создать новую модель, которая извлекает параметры конфигурации из базы данных, а затем автоматически загружать эту модель, чтобы она была доступна глобально.Затем вы можете получить доступ к своим опциям через $this->model_name->function_name($db_column); и иметь $db_column в качестве названия столбца для опции, которую вы ищете, и позволить вашей функции модели выбрать и вернуть данные столбца.

Лично,Я использую пользовательский файл конфигурации:
http://codeigniter.com/user_guide/libraries/config.html

0 голосов
/ 14 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...