diff --git a/database/src/Bridges/DatabaseDI/DatabaseExtension.php b/database/src/Bridges/DatabaseDI/DatabaseExtension.php index 1272a1259f2..844a65de349 100644 --- a/database/src/Bridges/DatabaseDI/DatabaseExtension.php +++ b/database/src/Bridges/DatabaseDI/DatabaseExtension.php @@ -36,7 +36,7 @@ public function getConfigSchema(): Nette\Schema\Schema 'user' => Expect::string()->nullable()->dynamic(), 'password' => Expect::string()->nullable()->dynamic(), 'options' => Expect::array(), - 'debugger' => Expect::bool(true), + 'debugger' => Expect::bool(), 'explain' => Expect::bool(true), 'reflection' => Expect::string(), // BC 'conventions' => Expect::string('discovered'), // Nette\Database\Conventions\DiscoveredConventions @@ -61,6 +61,24 @@ public function loadConfiguration() } + public function beforeCompile() + { + $builder = $this->getContainerBuilder(); + + foreach ($this->config as $name => $config) { + if ($config->debugger ?? $builder->getByType(\Tracy\BlueScreen::class)) { + $connection = $builder->getDefinition($this->prefix("$name.connection")); + $connection->addSetup('@Tracy\BlueScreen::addPanel', [ + [Nette\Bridges\DatabaseTracy\ConnectionPanel::class, 'renderException'], + ]); + if ($this->debugMode) { + $connection->addSetup([Nette\Database\Helpers::class, 'createDebugPanel'], [$connection, !empty($config->explain), $name]); + } + } + } + } + + private function setupDatabase(\stdClass $config, string $name): void { $builder = $this->getContainerBuilder(); @@ -113,15 +131,6 @@ private function setupDatabase(\stdClass $config, string $name): void ->setFactory(Nette\Database\Context::class, [$connection, $structure, $conventions]) ->setAutowired($config->autowired); - if ($config->debugger) { - $connection->addSetup('@Tracy\BlueScreen::addPanel', [ - [Nette\Bridges\DatabaseTracy\ConnectionPanel::class, 'renderException'], - ]); - if ($this->debugMode) { - $connection->addSetup([Nette\Database\Helpers::class, 'createDebugPanel'], [$connection, !empty($config->explain), $name]); - } - } - if ($this->name === 'database') { $builder->addAlias($this->prefix($name), $this->prefix("$name.connection")); $builder->addAlias("nette.database.$name", $this->prefix($name));