使用CakePHP 2.6.7
我创建了一个插件,有两个变量,大部分都是有效常量 - 但用户应该能够更改它们的值(它们是页眉和页脚图像的路径)。
我一直在尝试使用Configure::read()
和Configure::write()
,但现在意识到这不是Configure
的用途,实际上根本不会以这种方式运作。
如何存储这两个变量,以便用户可以更改这些值,这些更改将是永久性的(直到他们进行另一次更改)?
初始解决方案
我现在通过将数组中的数据序列化为文本文件来解决问题。如果有人有一个更优雅的解决方案,那就太好了。
答案 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
表中存储的内容,以使此方法尽可能灵活。