Codeigniter возвращает файл конфигурации в виде массива с включенной автозагрузкой - PullRequest
1 голос
/ 28 мая 2010

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

Моя проблема в том, что я не могу использовать этот бит, когда автозагрузка моего файла конфигурации включена, но когда я отключаю автозагрузку, я не могу загрузить его вручную, он никогда не находит мои переменные. Поэтому я просто беру все значения из файла конфигурации и помещаю их в один массив, чтобы я мог передать этот массив на мою страницу управления настройками (редактировать / показать все настройки).

$this->config->load('site_settings', TRUE);
$data['settings'] = $this->config->item('site_settings');
...
$this->load->view('template', $data);

конфиг / site_settings.php

 <?php
    if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    $config['header_img'] = './img/header/';
    $config['copyright_text'] = 'Copyright Instituto Kabu';
    $config['copyright_font'] = './system/fonts/motoroil.ttf';
    $config['copyright_font_color'] = 'ffffff';
    $config['copyright_font_size'] = '32';

Ответы [ 3 ]

0 голосов
/ 29 мая 2010

Разве вы не пытаетесь получить элемент, который не существует, поэтому он просто возвращает FALSE (логическое значение)? Вы пытаетесь загрузить элемент "site_settings", но у вас нет элемента с таким именем в индексе массива. Вместо этого должно быть, например, при загрузке одного элемента, $ this-> config-> item ('header_img');

Также с вашим вторым параметром при загрузке каждый файл конфигурации будет сохранен в индексе массива, соответствующем имени файла конфигурации.

$ this-> конфигурации [ 'site_settings'].

Подробнее о классе конфигурации и его использовании здесь

0 голосов
/ 29 мая 2010

Хорошо, я нашел решение. Проблема была в том, что эта проверка встроена в библиотеку Config:

if (in_array($file, $this->is_loaded, TRUE))
{
    return TRUE;
}

Поэтому я отредактировал его с дополнительным параметром, чтобы он выглядел так:

function load($file = '', $use_sections = FALSE, $fail_gracefully = FALSE, $skip_loadedCheck = FALSE)
    {
        ...

                if(!$skip_loadedCheck) {
                    if (in_array($file, $this->is_loaded, TRUE))
                    {
                            return TRUE;
                    }
                }

Теперь, чтобы загрузить все данные в массив, я могу просто сделать это:

$this->config->load('site_settings', TRUE, FALSE, TRUE);
$data['settings'] = $this->config->item('site_settings');
0 голосов
/ 28 мая 2010

Содержимое файла определенно верно? (Проверьте скобки, кавычки ...)

Имя файла конфигурации совпадает с тем, которое вы запрашиваете?

...