如何通过调用codeigniter控制器函数来更改配置项值?

时间:2013-10-22 12:34:08

标签: php codeigniter

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

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);

}

1 个答案:

答案 0 :(得分:2)

根据您对问题的评论,您希望存储您的网站处于维护模式的事实。

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

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

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

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

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

这种方法尽管不是很干净,但它的优点是可以继续使用$ this-&gt; config属性来管理代码。基本上,当您按维护模式按钮时,将以下内容写入文件(例如,我们称之为prop.php):

<?php

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

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

include_once("prop.php");

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

<?php

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

如果这是您正在寻找的功能,请告诉我们!