CMS vo vendor a preťaženie Presentera a Templatu v App

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

Chceme spraviť CMS ktoré sa cez composer natiahne do vendor priečinka. Budú tam štandarne aj Presentery a templaty, tak pre administráciu ako aj pre frontend. V App by sme chceli potom preťažovať niektoré templaty a layouty a niekedy aj celý Presenter (podľa potreby). Napríklad ak budem chcieť preťažiť toto:

vendor/cms/FrontendModule/Presenter/HomepagePresenter.php

tak len vytvorím:

App/FrontendModule/Presenter/HomepagePresenter.php

ktorý ho bude dediť a budem môcť pridať/upraviť metódy, ktoré potrebujem.

Toto sme efektívne používali v Symfony ale zatiaľ sa nám to nepodarilo v nette. Pokúšali sme sa preťažiť PresenterFactory aby robil automaticky pri hľadaní presentera fallback do vendor/cms/ ale nedokázali sme to nakonfigurovať v config.neon tak aby to behalo. Riešil už niekto tento problém? Ako na to?

CZechBoY
Člen | 3608
+
0
-

Zdravím,
moc nechápu v čem máte problém.
Přetěžovat jde jakákoliv třída, která je kdekoliv (kdyz ji najde robotloader).

Pavel Kravčík
Člen | 1183
+
0
-

Mám za to, že tohle nativně nefunguje jako Symfony, kde se to přetěžovalo automaticky.

David Matějka
Moderator | 6445
+
+3
-

Ano, upravou PresenterFactory na to jdes spravne. Melo by stacit tou vlastni factory nahradit tu puvodni:

services:
	application.presenterFactory: MyPresenterFactory #pripadne nette.presenterFactory pro <=2.2

Ja mam taky vlastni presenter factory, tak se tam muzes inspirovat, pripadne to rovnou pouzit, jestli bude vyhovovat. Melo by to umet presne co potrebujes.

V pripade tech sablon budes muset prekryt v presenteru metody formatTemplateFiles a formatLayoutTemplateFiles