【问题标题】:How to change config item value by calling a codeigniter controller function?如何通过调用 codeigniter 控制器函数来更改配置项值?
【发布时间】:2013-10-22 12:34:07
【问题描述】:

我有一个控制器功能试图更改配置项,但它不起作用。如何通过调用此控制器函数来更改配置项的值?这是我的代码:

maintenance_config.php

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

 //Maintenance mode

 $config['maintenance_mode'] = FALSE;

控制器文件功能

function maintenance_mode_activate(){

 $this->config->load('maintenance_config');
 $this->config->set_item('maintenance_mode', TRUE);

}

【问题讨论】:

  • 您想暂时或永久更改它..??
  • 我暂时想要。好像我会单击一个按钮来激活维护模式,然后单击另一个按钮或同一个按钮来停用该模式。

标签: php codeigniter


【解决方案1】:

根据您问题中的 cmets,您希望存储您的网站处于 维护模式这一事实。

您发布的代码确实更改了配置值,但仅在 PHP 中的请求/处理线程的持续时间内 - 参考您的示例,一旦涉及运行 maitenance_mode_active() 方法的流程被执行,配置选项丢失。

set_item() 方法不会覆盖文件中的设置,它只是更改内存中的值。您可以通过两种方式规避此问题:

1。将值存储在数据库中。

只需创建一个表来存储应用程序的配置选项,然后创建一个将 maintenance-mode 示例值设置为 0 的行。按下按钮后,将其更改为 1并在需要时简单地检索该值。

2。将其存储在可被覆盖的 PHP 文件中。

这种方法虽然不是那么干净,但它的优点是您可以继续使用 $this->config 属性来管理您的代码。基本上,当您按下 maintenance-mode 按钮时,将以下内容写入文件(例如,我们称之为 prop.php):

<?php

$config['maintenance-mode'] = true;

现在您只需将它包含在您的 config.php 文件中:

include_once("prop.php");

您现在可以通过 $this->config 引用配置选项。如果您想关闭维护模式,只需使用以下命令覆盖文件:

<?php

$config['maintenance-mode'] = false;

让我知道这是否是您正在寻找的功能!

【讨论】:

    猜你喜欢
    • 2020-07-12
    • 2012-06-15
    • 2020-05-14
    • 2011-02-25
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多