我正在尝试存储应用程序的配置设置。要存储的详细信息应该在整个应用程序中都可用,并且应该可以更新它们。详细信息的示例包括徽标图像的链接和联系人详细信息。
我确实是通过将详细信息存储在数据库中,创建一个模型和控制器来开始这项工作的。然而,由于徽标在每个页面上,这需要在每次加载页面时查询数据库。
我读过关于Configure类的文章,但我不能把它做得太好。有人能解释我如何使用Configure将这些配置变量存储在文件中,读取它们并在文件中更新它们吗。我看过烹饪书和API,但不是很清楚。
您可以在app_controller的beforeFilter中循环使用名称来编写设置。
像这样:
<?php
$settings = Cache::read('AppSettings');
if(!$settings){
$settings = $this->Settings->find('all');
Cache::write('AppSettings', $settings);
}
foreach($settings as $setting){
Configure::write('Settings.' . $setting['Setting']['name'], $setting['Setting']['value']);
}
?>
因此,您将拥有一个包含字段id、name和value的数据库,其中name是您用来获取配置的内容,value是您期望的值
具有值为"sitename"的字段"name"和值为"MySite"的字段"value"的行
可以用Configure::read('Settings.sitename');
调用,并返回"MySite">
然后在设置模型中,将Cache::delete('AppSettings');
放入afterSave
方法中。这样,当更新或添加记录时,缓存将被破坏,并且设置将被重新缓存和重新配置。