【问题标题】:Dynamic Custom CodeIgniter Config File动态自定义 CodeIgniter 配置文件
【发布时间】: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


【解决方案1】:

这是我在开发自己的 CMS 时遇到的设计限制之一。配置在框架文件中。然后,我虽然使用第二个数据库(例如 SQLite)来引导额外的配置数据,但随后面临 CI 的第二个限制,因为它一次不支持多个数据库。剩下的唯一选择是在不同的上下文中硬编辑配置文件本身,自定义文件或 codeigniter 挂钩可以完成这项工作。或安装控制器(在 pyro CMS 中实现)

如果您想讨论更多 cms 设计问题,请告诉我,因为我正在处理类似的事情。

祝你好运。

【讨论】:

  • 感谢有关钩子的建议。我已经放弃了这个问题,因为我发现如果不大量修改 CI 的核心基本上是不可能的。如果我遇到更多问题,可以联系您寻求协作帮助吗?
  • @TyBailey 很高兴,请在 twitter、g+ 或 facebook 上保持联系
猜你喜欢
  • 2014-01-15
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 2015-05-15
相关资源
最近更新 更多