所以我刚开始使用CodeIgniter ......并且陷入设置配置项
我已经读过,替换配置项的值就像这样简单:
$this->config->set_item('item_name', 'item_value');
但是如果我想设置配置项是配置项数组的一部分呢...就像这样:
$api_config = $this->config->load('api'); //loading the created configuration under config folder
api.php
$facebook['app_id'] = '123213213';
$facebook['api_key'] = '123123WERWERWE123123';
$config['facebook'] = $facebook;
我想动态替换app_id。
答案 0 :(得分:1)
当然可以这样做,但您需要手动解包/重新包装配置项。例如,给定此配置文件:
$f['a'] = "1";
$f['b'] = "2";
$config['t'] = $f;
这个控制器功能:
function t()
{
var_dump($this->config->item("t"));
echo "<br>";
$v = $this->config->item("t");
$v['a'] = "3";
$this->config->set_item('t', $v);
var_dump($this->config->item("t"));
}
您将获得此输出:
array(2) { ["a"]=> string(1) "1" ["b"]=> string(1) "2" }
array(2) { ["a"]=> string(1) "3" ["b"]=> string(1) "2" }
有一点需要注意:文件中的实际配置值没有改变:您需要在每个请求上重新应用更改。
答案 1 :(得分:0)
不幸的是,由于你现在拥有的东西,你不能这样做。
查看相关代码:
// from CI 2, CI 1 has no differences which will effect the current situation
include($file_path);
if ( ! isset($config) OR ! is_array($config))
{
if ($fail_gracefully === TRUE)
{
return FALSE;
}
show_error('Your '.$file_path.' file does not appear to contain a valid configuration array.');
}
if ($use_sections === TRUE)
{
if (isset($this->config[$file]))
{
$this->config[$file] = array_merge($this->config[$file], $config);
}
else
{
$this->config[$file] = $config;
}
}
else
{
$this->config = array_merge($this->config, $config);
}
如您所见,从配置文件中选取的唯一值是$config
。 CI几乎丢弃了其他一切。您不应该通过配置来读取或写入该值。
您的选择是您可以拥有一个facebook配置文件,您可以将facebook数组存储为api配置文件中$ config变量中的值,或者您可以将值存储为某些特殊键,例如'facebook_app_id'同一个文件。您必须决定哪个选项最适合您的需求,但我倾向于将值存储为'facebook_app_id'。
答案 2 :(得分:0)
$this->config->load('api', true);//load config first
//begin set new value
$this->config->set_item('app_Ckey',‘your new value’);
$this->config->set_item('app_id',‘your new value’);
$this->load->library('api');
echo $this->config->item('app_Ckey');