【发布时间】:2013-06-10 16:26:10
【问题描述】:
我为使用 CodeIgniter 构建的自定义 CMS 创建了自定义配置文件。我想在 CMS 中有一个“配置”页面,允许用户保存联系人电子邮件地址和其他变量。
我想允许用户从管理员 CP 即时设置这些配置变量,但我在这样做时遇到了麻烦。
我在这里找到了这篇文章:Dynamically updating config data codeigniter,它提出了一个类似的问题,但答案并不是我想要的。
是否可以从控制器即时永久更新配置文件?现在我的代码如下所示:
$this->config->load('cms_config');
//load the initial view
$this->data['subview'] = 'admin/setup/index';
$this->load->view('admin/_layout_main', $this->data);
//validate form
if($this->form_validation->run('site_config') == TRUE) {
$this->config->set_item('contact_email', $this->input->post('contact_email'));
}
但这似乎根本没有更新文件。事实上,表单提交时似乎什么都没有发生。
【问题讨论】:
-
该 set_item 调用不会将配置项保留在请求之外。为什么不将首选项保存到数据库并在应用程序启动时将它们设置在配置对象中?
-
我可以这样做,我试图避免将配置项保存在数据库中,而只是即时更新文件。将它们保存在数据库中需要额外的 HTTP 请求来获取配置数据,这还不错,我只是想避免它。
-
这是过早的优化,我怀疑额外的查询会破坏您的网站。您始终可以缓存它,因此您只需查询一次(我通常使用可编辑的站点配置这样做)
标签: php arrays codeigniter app-config