Zděděné Nette\Database\Connection
- jtousek
- Člen | 951
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
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
Ř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
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.