2010-12-09 28 views
3

J'ai deux fichiers de configuration.codeigniter: accède aux variables de configuration d'autres fichiers de configuration?

config.php (Code allumeurs de configuration de base)

et email.php (par la classe auto-chargement e-mail quand il est utilisé)

Ce que je suis désireux de le faire est.

Dans config.php ont

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

puis à email.php ont

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 
} 

Mais cela est de ne pas avoir d'effet (im deviner $ config [ 'env'] fait pas avoir ces valeurs).

Comment accéder à cette valeur?

Répondre

8

J'ai vérifié et à ce moment du cycle de vie demande la propriété de configuration de l'objet CodeIgniter est juste un tableau, pas un objet de configuration.

donc vous devriez être en mesure d'obtenir à vos paramètres de configuration comme ceci:

$this->config['env'] 

Donc cela devrait fonctionner:

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 
} 

Si vous auto-charger des fichiers de configuration, assurez-vous qu'ils sont chargés automatiquement dans l'ordre correct. Un fichier de configuration doit être chargé automatiquement après tout ce qui en dépend.

+0

Dans CI 3.17 '$ config_component-> config ['votre_config_item']' fonctionne pour moi – Avinash

4

Ajouter ceci à votre fichier de configuration d'email.

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

Vous ne savez pas si le premier fonctionnera sur votre installation. La plupart des gens semblent utiliser la seconde.

+0

se dit config n'est pas un objet – Hailwood

+0

Cela a fonctionné pour moi: config_item ('env'). Je vous remercie! –

3

Essayez ceci:

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

if ($env == "dev_server") { 
    // Do this... 
} 
else { 
    // Do this.. 
} 
+0

se config n'est pas un objet – Hailwood

+0

Celui-ci a fonctionné pour moi, la réponse acceptée ne semble pas fonctionner sur la dernière version de CodeIgnitor –

0

Dans ce cas, vous voulez mettre dans la configuration

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

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

Combinaison avec d'autres vases, vous pouvez partager des informations entre deux fichiers de configuration pour le même environnement

+0

par la façon op a un avatar épique –

+0

Ouais, la première fois que j'ai posté cette question c'était avant la 2.0, donc les environnements n'existaient pas! Et merci, j'aime bien mon avatar lol – Hailwood

0

utilisez la fonction config_item (system/core/Common.php)

/** * Renvoie l'élément de configuration spécifié * * @access publique * @return mixte

0

S'il vous plaît voir ci-dessous des solutions

$ this-> config-> config [ » base_url ']

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

ci-dessus affichera les détails nécessaires

0

Dans CodeIgniter 3.0, la solution pour accéder aux variables de configuration dans un autre fichier de configuration est d'obtenir l'instance de CodeIgniter. Une fois que vous avez une référence, vous pouvez alors accéder en utilisant la fonction item.

$CI =& get_instance(); 
$var = $CI->config->item('item_name');