Dynamické mapovanie folder-paths a namespaces entít v ORM Nettrine

KristianSubweb
Člen | 144
+
0
-

Ahojte chcel by som sa vás opýtať či ste niekto neriešili dynamické mappovanie priečinkov kde ORM hladá Entity. Aktuálne na niečom obdobnom pracujem len nejako sa neviem dopracovať do finále.

Takto mám nastavený default folder v ktorom to pozerá entity.

doctrine.orm.annotations:
	mapping:
		App\AdminModule\DefaultModule\Model\Entities: %appDir%/AdminModule/DefaultModule/Model/Entities

Keď pozriem do Containeru tak to vyzerá nasledovne:

	public function createServiceDoctrine__orm__mappingDriver(): Doctrine\Persistence\Mapping\Driver\MappingDriverChain
	{
		$service = new Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
		$service->addDriver(
			$this->getService('doctrine.orm.annotations.annotationDriver'),
			'App\AdminModule\DefaultModule\Model\Entities',
		);
		return $service;
	}
	.
	.
	.
		public function createServiceDoctrine__orm__annotations__annotationDriver(): Doctrine\ORM\Mapping\Driver\AnnotationDriver
	{
		$service = new Doctrine\ORM\Mapping\Driver\AnnotationDriver($this->getService('doctrine.annotations.reader'));
		$service->addExcludePaths([]);
		$service->addPaths(['/var/www/html/app/AdminModule/DefaultModule/Model/Entities']);
		return $service;
	}

Napísal som si vlatné mappovanie a to generuje to isté. Takto je to generované v Containeri.

	public function createServiceUserModule__Driver__App_AdminModule_Modules_UserModule_Model_Entities__annotationsImpl(): Doctrine\Persistence\Mapping\Driver\MappingDriver
	{
		return new Doctrine\ORM\Mapping\Driver\AnnotationDriver(
			$this->getService('doctrine.annotations.reader'),
			['/var/www/html/app/AdminModule/Modules/UserModule/Model/Entities'],
		);
	}


	public function createServiceUserModule__User__metadataDriver(): Doctrine\Persistence\Mapping\Driver\MappingDriverChain
	{
		$service = new Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
		$service->addDriver(
			$this->getService('userModule.Driver.App_AdminModule_Modules_UserModule_Model_Entities.annotationsImpl'),
			'App\AdminModule\Modules\UserModule\Model\Entities',
		);
		return $service;
	}

Takto to vyzerá container:

'userModule.User.metadataDriver' => Nette\DI\Definitions\ServiceDefinition
factory: Nette\DI\Definitions\Statement
arguments: array (0)
entity: 'Doctrine\Persistence\Mapping\Driver\MappingDriverChain'
setup: array (0)
name: 'userModule.User.metadataDriver'
type: null
tags: array (0)
autowired: false
notifier: Closure()
file: '/var/www/html/vendor/nette/di/src/DI/ContainerBuilder.php:94'
'userModule.Driver.App_AdminModule_Modules_UserModule_Model_Entities.annotationsImpl' => Nette\DI\Definitions\ServiceDefinition
factory: Nette\DI\Definitions\Statement
arguments: array
0 => '@Doctrine\Common\Annotations\Reader'
1 => array
0 => '/var/www/html/app/AdminModule/Modules/UserModule/Model/Entities'
entity: 'Doctrine\ORM\Mapping\Driver\AnnotationDriver'
setup: array (0)
name: 'userModule.Driver.App_AdminModule_Modules_UserModule_Model_Entities.annotationsImpl'
type: 'Doctrine\Persistence\Mapping\Driver\MappingDriver'
tags: array (0)
autowired: false
notifier: Closure()
file: '/var/www/html/vendor/nette/di/src/DI/ContainerBuilder.php:94'

No stále to píše takúto chybu:
The class ‚App\AdminModule\Modules\UserModule\Model\Entities\User‘ was not found in the chain configured namespaces App\AdminModule\DefaultModule\Model\Entities

Pritom ak si pozriete ten kód hore tak to vyzerá správne namespace a path folder je správny.

Za každú radu vám ďakujem. :)

Editoval KristianSubweb (26. 8. 2022 16:21)

cvit84
Člen | 43
+
+1
-
'App\AdminModule\Modules\UserModule\Model\Entities

to vypadá jako by jsi tuhle cestu neměl namapovanou.

Na rozdíl od tohoto kodu

App\AdminModule\DefaultModule\Model\Entities',

Ale nevím. Jenom jsem to letmo pročetl a nevím čeho přesně chceš dosahnout. Jenom je vidět, že tahle cesta není namapovaná.