3

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

维护配置.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);

}
4

1 回答 1

2

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

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

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

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

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

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

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

<?php

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

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

include_once("prop.php");

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

<?php

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

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

于 2013-10-22T12:53:59.720 回答