Found sections ‚dibi‘ in configuration, but corresponding extensions are missing

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

Ahoj,

snažím se přijít na to jak do nette zakomponovat DIBI. Rád bych rozjel Leanmapper.

Oboje mám nainstalováno přes composer a v configu se snažím nakonfigurovat připojení k DB skz DIBI, ale laděnka hází:

Found sections ‚dibi‘ in configuration, but corresponding extensions are missing.

config:

<?php
#
# SECURITY WARNING: it is CRITICAL that this file & directory are NOT accessible directly via a web browser!
#
# If you don't protect this directory from direct web access, anybody will be able to see your passwords.
# https://nette.org/en/security-warning
#
parameters:

php:
	date.timezone: Europe/Prague
	# zlib.output_compression: yes

nette:
	application:
		errorPresenter: Error
		mapping:
			*: App\*Module\*Presenter

	session:
		expiration: 14 days

services:
	- Model\UserManager
	- Model\Services\PhraseService
	- Model\Repository\PhraseRepository
	- App\RouterFactory
	router: @App\RouterFactory::createRouter

dibi:
	driver: mysql
	hostname: localhost
	username: root
	password:
	database: phrase
	profiler: true
	lazy: true

?>
Mesiah
Člen | 240
+
0
-

Ono jsou 2 způsoby, jak to rozchodit (testována na 2.0.13)

parameters:
        database:
                driver: mysqli
                host: localhost
                username: root
                password: heslo
                database: impress
                lazy: true
                profiler: true

services:
        defaultMapper: LeanMapper\DefaultMapper
        entityFactory: LeanMapper\DefaultEntityFactory
        #connection: LeanMapper\Connection(%database%, ...)
        filterClass: Model\Filter\CommonFilter(defaultMapper)
        connection:
            class: LeanMapper\Connection(%database%, ...)
            setup:
                - registerFilter('onlyValid', [@filterClass, 'onlyValid'])

nebo

dibi:
        driver: mysql
        host: localhost
        username: root
        password: heslo
        database: impress
        lazy: TRUE
        profiler: true
services:
        defaultMapper: LeanMapper\DefaultMapper
        entityFactory: LeanMapper\DefaultEntityFactory
        emailRepository: Model\Repository\EmailRepository

a do bootstrapu přidej

$configurator->onCompile[] = function ($configurator, $compiler) {
    //$compiler->addExtension('dibi', new DibiNette21Extension());
    $compiler->addExtension('dibi', new DibiNette20Extension());
};

s tím, že DibiNette20Extension uprav takhle

//		$connection = $container->addDefinition($this->prefix('connection'))
//			->setClass('DibiConnection', array($config));

                $connection = $container->addDefinition($this->prefix('connection'))
                        ->setClass('LeanMapper\Connection', array($config));
batko
Člen | 219
+
0
-

děkuji

Service ‚26_Model_Repository_PhraseRepository‘: No service of type LeanMapper\Connection found. Make sure the type hint in LeanMapper\Repository::__construct() is written correctly and service of this type is registered. search►

batko
Člen | 219
+
0
-

chybělo mi v configu

extensions:
dibi: DibiNette21Extension

leninzprahy
Člen | 150
+
0
-

To právě záleží, jako verzi nette používáš, ale zřejmě 2.1, takže správně registruješ v config.neon

extensions:
	dibi: DibiNette21Extension

v bootstrap.php pak už to registrovat nemusíš, takže

$configurator->onCompile[] = function ($configurator, $compiler) {
    //$compiler->addExtension('dibi', new DibiNette21Extension());
    $compiler->addExtension('dibi', new DibiNette20Extension());
};

můžeš vyhodit…

Ve verzi 2.0.* je to opačně, musí to být v bootstrap.php a ne v config.neon. Podle verze vybereš i správné rozšíření DibiNette21Extension vs DibiNette20Extension, ale to je předpokládám srozumitelné.

viz taky https://doc.nette.org/…n/extensions