Předání parametru z neonu, třídě vytvořené ve službě

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

Zdravím,
mám model, který přes constructor dostává službu RepositoryManager, ta má k dispozici připojení do databáze. Při přístupu k vlastnosti RepositoryManageru, se podle názvu vlastnosti v metodě __get($name) vytvoří požadované repository podle názvu a předá se mu připojení k db.

$articles = $this->repositoryManager->articles->findAll();

RepositoryManager tedy vrátí ArticlesRepository a na něm zavolá metodu findAll() která je zděděná z obecného Repository. Ta vratí EntityCollection a opět podle názvu repository vytvoří pole entit, v tomto případě Article.

$article = $this->repositoryManager->articles->getById(10);

Teď mi ArticlesRepository vrátí jen jednu entitu Article.

Teď bych chtěl na entitě zavolat metodu getImages(), která mi vrátí pole obrázků ve složce. K tomu však potřebuji entitě definovat, kde má ty obrázky hledat.

Nejlíp parametrem z config.neon. Jak jí to však předat? To mám až při použití entity jí definovat setImagesDirectory($dir)? A když se jedná o pole entit, tak je všechny znovu procházet a nastavovat složku?
Nebo si nadefinovat nějakou konstantu a v entitě hledat v IMAGES_DIR.$articleDir? To se mi moc nelíbí.

Nebo jdu nato úplně špatně?

Děkuji

Felix
Nette Core | 1247
+
0
-

Hmmm, kdyz to mas takhle vsechno schovane za magii, tak budes potrebovat neco co ti do entity dosadi zavislosti.

Treba:

class Article {

	function inject(FileStorage $storage) {
	}
}

A tam bys mohl mit namapovano, ze entita Article ma tenhle/a/tenhle/path.

Takhle to ma treba LeanMapper a Nextras\ORM jestli se nepletu.

Aktualne me jine reseni nenapada.

jEhLa
Člen | 70
+
0
-

Mno právě, ale co nebo kdo, a jak mi to tam dosadí? :-D

Felix
Nette Core | 1247
+
0
-

To si musis doprogramovat udelej si treba RepositoryInjector, EntityInjector a inspiruj se treba u InjectExcetion.

Nebude to tak slozite nakonec. :-)

jEhLa
Člen | 70
+
0
-

Už jsem dohledal, zkusím asi něco jako tohle:
https://forum.nette.org/…cted-factory#…