Automatická registrace presenterů (Option ‘scanDir’ has no effect, global RobotLoader is used.)

tomees
Člen | 59
+
0
-

Ahoj, v aplikaci používáme různé moduly jako DI extension, které zapínáme / vypínáme přidáním do configu. Moduly obsahují i presentery a doteď nám vyhovovalo, že se automaticky neregistrovaly do DI, protože pokud Modul (extension) nebyl registrovaný a presenter z modulu byl zaregistrován, spadlo to na neexistenci nějaké závyslosti právě z toho nezaregistrovaného modulu.
Případnou optimalizaci jsem pak řešil přes scanDirs

po aktualizaci na poslední verzi nette/application máme problém s tím, že nyní probíhá automatické vyhledání všech presenterů a registrace a tím pádem máme problém. Pravděpodobně to má i spojitost s tím, že vše načítáme přes RobotLoader a nyní při pokusu ovlivnit toto chování přes scanDirs dostávám hlášku

User Deprecated
Option ‚scanDir‘ has no effect, global RobotLoader is used.

Jde toto nějak nyní řešit? Nebo jak byste řešili aby se neregistrovaly určité presentery které nemáte v plánu používat?

Díky

Editoval tomees (9. 11. 2019 11:26)

David Grudl
Nette Core | 8227
+
+1
-

Máš pravdu, že teď vypnout automatické registrování presenterů nejde. Chování jsem opravil, teď má scanDirs přednost před použitím systémového RobotLoaderu.

Gappa
Nette Blogger | 208
+
+1
-

Pro doplnění, pokud by tento thread někdo našel stejně jako já :)

  • nette/application 3.0.2 (a asi i nižší, do verze 3.0) – scanDirs vypnout nejdou.
  • nette/application 3.0.3 (vyžadující nette/utils 3.1.0) – scanDirs vypnout jdou, klasicky pomocí hodnoty false.

Editoval Gappa (7. 1. 2020 7:20)