Nastavení v configu, kde se mají presentery hledat
- Oli
- Člen | 1215
Vím, že se od verze (tuším) 2.3 automaticky registrují presentery do DIC. Tohle chování je možné změnit a zaregistrovat si všechny presentery, které potřebuji ručně.
Je ale možné určit adresáře ve kterých se mají presentery hledat?
Mějme adresářovou strukturu například
- AdminModule
- ArticleModule
- UserModule
- GalleryModule
A teď bych chtěl (třeba proto, že galleryModule
ještě
není hotový) hledat presentery jen v ArticleModule
a
UserModule
. Jde to nějak?
Proč by se to hodilo?
Mám jednotlivé moduly jako balíčky, které stahuji pomocí composeru.
Pokud pro daný projekt modul není potřeba, tak ho vubec nestahuju. Všechny
moduly obsahují základní presenter, ze kterého se poté vychází
v projektu. Pokud není potřeba nic speciálního, tak se v
app/AdminModule/ArticleModule/presenters/ArticlePresenter.php
použije jen
class ArticlePresenter extends DefaultArticlePresenter
{
}
Zde je právě kámen úrazu. Pokud balíček není potřeba, tak
DefaultArticlePresenter
chybí a musím ho vytvořit „jen aby
byl“. Pokud by jsem mohl někde v configu nastavit, že se nemá hledat
presenter ve složce ArticleModule, tak by odpadl tenhle debilní
workaround…
- David Matějka
- Moderator | 6445
muzes pouzit konfiguracni moznost scanDirs, ale je nutne zabranit mergovani s tou stavajici hodnotou:
application:
scanDirs!: [foo, bar]
Ale proc mas v projektu ten ArticlePresenter?
btw, ja mam treba pro vyvoj to scanovani uplne vypnuty, aby to pri kazde zmene presenteru negenerovalo konejner – ale az se mergne tenhle super PR, tak to ani nebude potreba
- Oli
- Člen | 1215
To vypadá jako přesně to co potřebuju, díky :-)
Ještě otázka, jde to nějak zaregistrovat z extension? Něco jako, že by
každej modul (kterej je zároveň extension) měl v sobě právě tohle
zahrnutí do scanDirs
.
Ale proc mas v projektu ten ArticlePresenter?
Z lenosti. Projekt začínám na nějakém vlastním skletonu, který obsahuje mimojiné tyhle prázdné presentery a po stáhnutí + přidání do sekce extensions bych byl rád, kdyby se daný modul oživil. Navíc pokud bych to načítal přímo z vendoru, tak bych musel verzovat případné změny přímo u modulu. Myšlenka tohohle systému je zhruba:
- Základní použití modulu → použije se ArticlePresenter extends DefaultArticlePresenter {}
- Modifikované použití → viz předchozí + přetížení některé z metod, které jsou specifické pro daný projekt
- Speciální použití → ArticlePresenter vůbec nedědí od DefaultArticlePresenteru, ale od FrontendPresenteru.
- David Matějka
- Moderator | 6445
Ještě otázka, jde to nějak zaregistrovat z extension?
bohuzel nikoliv
- Oli
- Člen | 1215
Asi pořád ještě nemůžu upravovat scanDirs z extension, že? Neplánuje se třeba něco jako má Kdyby https://github.com/…Provider.php