konfigurace aplikace v dazabázi

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
colek
Člen | 59
+
0
-

Ahoj,

jak v nette načíst konfiguraci aplikace uloženou v databázi? Zend má implementovaný vzor registry v Zend_Registry – jak se tohle řeší v Nette?

dík

Felix
Nette Core | 1190
+
0
-

Postupoval bych asi nasledovne:

<?php
foreach($configs as $key=>$value){
	NEnvironment::setVariable($key,$value);
}

/* zajisti nacteni konfigurace */
NEnvironment::loadConfig();
?>

Nezkousel jsem, tak snad ti to nejak pomuze ;-)

Editoval Felix (24. 1. 2011 0:42)

Mikulas Dite
Člen | 756
+
0
-

Pro připojení k databázi ale potřebuješ nějaké přihlašovací údaje, které stejně musí být v nějakém jiném úložišti. Vzhledem k tomu, že právě tyhle tvoří většinu configu, nedává to moc smysl.

Filip Procházka
Moderator | 4668
+
0
-

Pravděpodobně bude chtít ukládat nějaká nastavení webu, která chce mít variabilní.

Použil bych trochu jinou techniku.

Vytvořit vlastní Configurator

class Configurator extends Nette\Configurator
{
	public function loadConfig($file)
	{
		$config = parent::loadConfig($file);
		$dbConfig = dibi::select("key, value")
			->from('configuration')
			->fetchPairs();

		$config = array('app' => $appConfig) + $config->toArray();
		return new Nette\Config\Config($config);
	}
}

a v bootstrapu potom

require_once APP_DIR . '/model/Configurator.php';
Nette\Environment::setConfigurator(new Configurator());
Nette\Environment::loadConfig();

Nyní si můžeš získat nastavení z databáze pomocí

dump(Nette\Environment::getConfig('app'));