codeigniter: доступ к переменным конфигурации из других файлов конфигурации? - PullRequest
3 голосов
/ 09 декабря 2010

У меня есть два файла конфигурации.

config.php (код конфигурации ядра воспламенителей)

и email.php (автоматически загружается классом электронной почты при его использовании)

То, что я хочу сделать, это.

В config.php есть

$config['env'] = 'hailwood_dev';

тогда в email.php есть

if($config['env'] == 'hailwood_dev'){
//email variables like smtp server to do with localhost
} elseif($config['env'] == 'production'){
//email variables like smtp server to do with production
}

Но это не имеет никакого эффекта (я предполагаю, что $ config ['env'] не имеет этих значений).

Как я могу получить доступ к этому значению?

Ответы [ 7 ]

8 голосов
/ 09 декабря 2010

Я проверил, и в этот момент в жизненном цикле запроса свойство config объекта CodeIgniter представляет собой просто массив, а не объект конфигурации.

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

$this->config['env']

Так что это должно работать:

if ($this->config['env'] == 'hailwood_dev')
{
    //email variables like smtp server to do with localhost
} 
elseif ($this->config['env'] == 'production'){
    //email variables like smtp server to do with production
}

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

5 голосов
/ 09 декабря 2010

Добавьте это в ваш файл конфигурации электронной почты.

$environment = config_item('env');
OR THIS
$environment = $this->config->item('env');

Не уверен, что первый будет работать на вашей установке.Кажется, большинство людей используют второе.

3 голосов
/ 09 декабря 2010

Попробуйте это:

 $env = $this->config->item('env');

 if ($env == "dev_server")  {
   // Do this...
 }
 else  {
   // Do this..
 }
0 голосов
/ 19 августа 2015

В CodeIgniter 3.0 решением для доступа к переменным конфигурации в другом файле конфигурации является получение экземпляра CodeIgniter. Если у вас есть ссылка на нее, вы можете получить доступ с помощью функции item.

$CI =& get_instance();
$var = $CI->config->item('item_name');
0 голосов
/ 04 марта 2013

Пожалуйста, смотрите ниже решения

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

echo "<pre>";
print_r($this->config);

Выше будут напечатаны необходимые данные

0 голосов
/ 04 октября 2012

использовать функцию config_item (system / core / Common.php)

/ ** * Возвращает указанный элемент конфигурации * * @ доступ общественности * @return mixed

0 голосов
/ 14 декабря 2011

В этом случае вы бы хотели поместить конфигурацию в

  • application / config / ceveloppment / my_config.php
  • application / config / production / my_config.php

http://codeigniter.com/user_guide/libraries/config.html

В сочетании с другими средствами оповещения вы можете обмениваться информацией между двумя файлами конфигурации для одной среды

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