Вы можете перебрать таблицу настроек в beforeFilter app_controller, используя имя в качестве способа записи настроек.
Примерно так:
<?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 - это значение, которое вы ожидаете от него.
Строка с полем 'name', которое имеет значение "sitename" и поле'value' со значением "MySite"
Может вызываться с Configure::read('Settings.sitename');
и возвращать 'MySite'
Затем в модели настроек вы помещаете Cache::delete('AppSettings');
в метод afterSave
,Таким образом, кэш уничтожается при обновлении или добавлении записи, а настройки будут повторно кэшированы и перенастроены.