Создать пользовательскую конфигурацию CakePHP - PullRequest
1 голос
/ 06 октября 2011

Я пытаюсь сохранить параметры конфигурации для моего приложения. Детали, которые должны быть сохранены, должны быть доступны по всему приложению, и должна быть возможность их обновления. Примеры деталей включают ссылку на изображение логотипа и контактные данные.

Я начал с сохранения деталей в базе данных, создания модели и контроллера. Однако, поскольку логотип находится на каждой странице, это требует запроса базы данных при каждой загрузке страницы.

Я читал о классе Configure, но не могу заставить его работать. Может кто-нибудь объяснить, как я мог бы использовать Configure для хранения этих переменных конфигурации в файле, читать их и обновлять их в файле. Я посмотрел кулинарную книгу и API, но она не очень понятна.

1 Ответ

2 голосов
/ 06 октября 2011

Вы можете перебрать таблицу настроек в 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,Таким образом, кэш уничтожается при обновлении или добавлении записи, а настройки будут повторно кэшированы и перенастроены.

...