如何通过调用代码点火器控制器函数来更改配置项值


How to change config item value by calling a codeigniter controller function?

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

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 中的请求/处理线程的持续时间内 - 参考您的示例,一旦执行涉及运行 maitenance_mode_active() 方法的流程,配置选项就会丢失。

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

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

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

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

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

<?php
$config['maintenance-mode'] = true;

现在你只需要把它包含在你的配置.php文件中:

include_once("prop.php");

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

<?php
$config['maintenance-mode'] = false;

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