Zděděné Nette\Database\Connection

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

Potřeboval bych podědit Nette\Database\Connection a tu použít, nyní to mám takto:

	services:
		database:
			class: MyConnection
			arguments: ['%database.driver%:host=%database.host%;dbname=%database.dbname%', %database.user%, %database.password%]

Při této konfiguraci ale nefunguje panel v debugbaru. Jak na to jinak?

Editoval jtousek (20. 5. 2012 20:49)

mkoubik
Člen | 728
+
0
-

Zkus tam přidat něco jako

services:
	database:
		class: MyConnection
		arguments: ['%database.driver%:host=%database.host%;dbname=%database.dbname%', %database.user%, %database.password%]
		setup:
			- onQuery[] = callback( @databasePanel, logQuery)

	databasePanel:
		class: Nette\Database\Diagnostics\ConnectionPanel
		autowired: false
		setup:
			- Nette\Diagnostics\Debugger::$bar->addPanel( @self )

(píšu z hlavy a nevim jestli to v neonu takhle vůbec jde).

duke
Člen | 650
+
0
-

Řeším podobný problém a panel v debugbaru mi funguje. Používám však zápis:

	nette:
		database:
			default:
				dsn: 'mydsn'
				user: myuser
				password: mypassword

	services:
		nette.database.default:
			class: MyConnection('mydsn', 'myuser', 'mypassword')

Bohužel musím opakovat položky dsn, user a password v redefinici nette.database.default. Nešlo by to nějak bez toho? A pokud ne, nešlo by se nějak odkázat na ty výše definované v sekci nette? %nette.database.default.dsn% atp. mi nefunguje.

Nebo existuje nějaký čistší způsob jak nahradit výchozí třídu Nette\Database\Connection za jinou?

duke
Člen | 650
+
0
-

Přidám jeden postřeh. Debug bar pro databázi se vygeneruje, pokud v configu bude např.:

common:
	parameters:
		database:
			default:
				dsn: '...'
				user: ...
				password: ...


	# tato část je tu jen kvůli automatickému vygenerování debug baru
	nette:
		database:
			default: []

	services:
		nette.database.default:
			class: MyConnection
			arguments:
				- %database.default.dsn%
				- %database.default.user%
				- %database.default.password%

Pokud existuje elegantnější způsob jak nahradit třídu Nette\Database\Connection, tak prosím dejte vědět.

jtousek
Člen | 951
+
0
-

Dobrý postřeh, díky. ;-) Nic elegantnějšího neznám, ale tohle mi celkem stačí.