Co do cache, to nie wiem, bo sam się zastanawiam, ale jeśli chodzi o sam konfig, to po prostu łączę tablicę sfConfig z konfigiem z bazy nadpisując istniejące klucze. Wszystko w filtrze.
Kod
app_config:
_attributes { phpName: AppConfig }
id:
category: { type: varchar, size: 255, default: default }
key: { type: varchar, size: 255, unique: true }
value: { type: varchar, size: 255 }
display_name: { type: varchar, size: 255 }
info: { type: longvarchar }
is_special: { type: boolean, default: false }
is_active: { type: boolean, default: true }
<?php
class AppConfigPeer extends BaseAppConfigPeer
{
{
$sql="SELECT c.* FROM ".AppConfigPeer::TABLE_NAME." c";
return self::load($sql);
}
static function getAllActive
() {
$sql="SELECT * FROM ".AppConfigPeer::TABLE_NAME." WHERE ".AppConfigPeer::IS_ACTIVE."=1";
return self::load($sql);
}
public static function load
($sql) {
$con = Propel::getConnection(null);
$stmt = $con->createStatement();
$rs = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM);
$rs->setFetchmode(1);
while($rs->next()) {
$data=$rs->getRow();
$config[$data['key']]=$data['value'];
}
return $config;
}
}
?>
Pozdrawiam.