Написать массив для конфигурации в Codeigniter? - PullRequest
6 голосов
/ 01 августа 2010

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

Мой массив выглядит так:

$config['users'] = array(array('username' => 'username', 'password' => 'password'));

Это хорошо работает.Я могу получить информацию быстро и легко.НО, если я пытаюсь записать новый массив (нового пользователя) в файл конфигурации, я получаю эту ошибку: Недопустимый тип смещения в isset или пусто

Я использую $this->config->item('users', array('username' =>....)), который не отображается вПоддержка массивов.

Как я могу записать массивы в мою конфигурационную переменную?Есть ли другой способ?

РЕДАКТИРОВАТЬ: Хорошо, ошибка исправлена ​​благодаря ответу phirschy.Я был настолько уверен, что мог использовать config-> item (), что я не проверял руководство для config-> set_item () ... НО, он все еще не работает.Вот конкретный код:

        $users = $this->config->item('users');
        array_push($users, array('username' => $this->input->post('username'), 'password' => $this->input->post('password')));
        $this->config->set_item('users', json_encode($users));
        echo json_encode($users);

Этот код вызывается через Ajax, и у меня есть окно с предупреждением, чтобы проверить, верны ли его значения.Они есть.И, как вы можете видеть, я попытался сохранить его как json вместо массива ... но это тоже не работает.Помогите пожалуйста?

спасибо

Ответы [ 2 ]

5 голосов
/ 02 августа 2010

Вы должны использовать метод 'set_item' для записи элемента конфигурации, а не 'item':

$this->config->set_item('item_name', 'item_value');

Или в вашем случае:

$this->config->set_item('users', array(...));
0 голосов
/ 04 августа 2012

Старый вопрос, но у меня был похожий вопрос.Итак:

И, как вы можете видеть, я пытался сохранить его как json вместо массива ... но это тоже не работает.

Это должно было быть первым, чтобы предупредить вас о том, что что-то не так - JSON - это просто строка.Если вы не смогли сохранить это, что-то еще было не так.На самом деле ваш код сбивает с толку и немного подозрительно, вы храните JSON (строку), но вы получаете к нему доступ, как будто это массив (нигде не указан json_decode).

В любом случае, я бы предложил простойtest:

$this->config->set_item('the_array', array("I'm", "an", "array"));
echo 'The config array: '.print_r($this->config->item('the_array'), true);

Я сам попробовал это, увидев ваш вопрос с однозначным ответом - прекрасно работает в CodeIgniter 1.7.Таким образом, ответ, да, может хранить массивы как элементы конфигурации.Кодировка JSON не требуется.

Cheers

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