允许用户更改CakePHP中的配置设置

时间:2015-06-25 09:38:16

标签: cakephp

使用CakePHP 2.6.7

我创建了一个插件,有两个变量,大部分都是有效常量 - 但用户应该能够更改它们的值(它们是页眉和页脚图像的路径)。

我一直在尝试使用Configure::read()Configure::write(),但现在意识到这不是Configure的用途,实际上根本不会以这种方式运作。

如何存储这两个变量,以便用户可以更改这些值,这些更改将是永久性的(直到他们进行另一次更改)?

初始解决方案

我现在通过将数组中的数据序列化为文本文件来解决问题。如果有人有一个更优雅的解决方案,那就太好了。

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是将这些值作为设置存储在数据库中,然后加载它们。

我们经常使用Setting模型来存储名称 - 值对,然后附加加载到数据中的组件(通常为AppController)。例如,创建一个这样的组件: -

App::uses('Component', 'Controller');

class SettingsComponent extends Component {

    public function initialize(Controller $Controller) {        
        $Controller->loadModel('Setting');      
        $settings = $Controller->Setting->find('all');      
        foreach($settings as $setting) {            
            Configure::write('Setting.' . $setting['Setting']['name'], $setting['Setting']['value']);           
        }
        return;
    }

}

然后为需要这些设置的任何控制器加载: -

public $components = array('Settings');

然后,您可以访问代码中的值,如: -

Configure::read('Setting.app_name', 'My Cake App');

您可以轻松扩展组件的功能以及settings表中存储的内容,以使此方法尽可能灵活。