Dědičnost presenterů, kde definovat connection a jak ho předat dětem

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

Zdravím,
v prográmku se připojuji k databázi z presenteru X, který vychází z abstraktního BasePresenteru. Používám new Connection(‚$dsn‘,‚$user‘, ‚$pass‘); Všechno jde v pořádku. ;)
Ale potřeboval bych informace o připojení umístit (asi) do BasePresenteru aby ho měly všechny child presentery přístupné stejně – nechci duplikovat kód, nedejbože připojení. A nemůžu přijít na to, jak nějak snadno předat z BasePresenteru objekt Connection dětem (něco jako parrent::connection ;)

(MySQL, Php 5.3, Nette 2.0beta)

Editoval Hafran (8. 11. 2011 11:19)

MW
Člen | 615
+
0
-

Tak parametry je vhodne nastavit v configu, napr. :

database:
		dsn: 'mysql:host=localhost;dbname=dbname'
		user: root
		password: 'heslo'

a pripojeni pak treba v BaseModelu :

static public $database;

    static function init($database) {
	self::$database = new \Nette\Database\Connection(
			$database->dsn, $database->user, $database->password);
}

kde v dalsich modelech pristupujes pres self::$database->

Jinak do databaze by mel pristupovat prave model aplikace.. nikoliv presenter..
Viz dokumentace .

Editoval MW (8. 11. 2011 11:29)

Hafran
Člen | 121
+
0
-

MW: Dík, já si říkal že to cpu někam, kam nemám. Dokonce koukám že v základním modelu (model.php) už je to dokonce nakonfigurované. ;)