Vytvoření extension s presentery

Chuchy
Člen | 77
+
0
-

Ahoj,

chtěl bych se zeptat jestli už tu někdo řešil vytvoření Extension s presentery, respektive přesunutí části logiky aplikace do „modulu“.

Co vlastně potřebuju, chtěl bych z aplikace vyjmout administrativní část k článkům a vytvořit z toho ArticleExtension, do kterého bych přesunul presentery, šablony, formuláře, service a doctrine, prostě všechno co se toho týká s vlastnim routováním.

Neřešil tohle někdo a dokázal by mě někdo někam nasměrovat, dokumentace mi stačila k tomu to tam všechno přesunout, ale už nevím jak namapovat ty presentery na router, tak aby to fungovalo.

předem všem díky

Chuchy
Člen | 77
+
0
-

Tak už mi to funguje, jenomže tu mám pár nedostatků, které bych potřeboval pomoct vyřešit

mám

class ArticleExtension extends CompilerExtension
{

	public function loadConfiguration()
	{
		$this->compiler->loadConfig(__DIR__ . '/config/config.neon');
	}
}

a v config.neon

services:
    - ArticleExtension\Doctrine\Entity\Article\ArticleFactory
    - ArticleExtension\Doctrine\Entity\Article\ArticleRepository

    - ArticleExtension\Doctrine\Entity\ArticleView\ArticleViewFactory
    - ArticleExtension\Doctrine\Entity\ArticleView\ArticleViewRepository

    - ArticleExtension\Doctrine\Entity\Category\CategoryFactory
    - ArticleExtension\Doctrine\Entity\Category\CategoryRepository

jenomže mapování presenteru a doctrine entity, musím dát do configu aplikace, jinak mi to hází chybu

Cannot load presenter ‚Article:Article‘, class ‚App\ArticleModule\Presenters\ArticlePresenter‘ was not found.

application:
	errorPresenter: Front:Error
	mapping:
		*: App\*Module\Presenters\*Presenter
		Article: ArticleExtension\Presenters\*Presenter
nettrine.orm.annotations:
	mapping:
		App\Doctrine\Entity: %appDir%/Doctrine/Entity
		ArticleExtension\Doctrine\Entity: %appDir%/Extensions/ArticleExtension/Doctrine/Entity

lze to nějak elegantně udělat i v config pro extension?

Marek Bartoš
Nette Blogger | 1173
+
+1
-

Musíš to celé otočit, v extension nelze spolehlivě načítat konfigurace jiných extension.

Zaregistruj si v neonu ve svém rozšíření vše tak, jak bys to udělal v aplikaci a místo registrace extension v neonu si v bootstrapu přidej neon.

Chuchy
Člen | 77
+
0
-

ok, díky, nechtěl sem to takhle hned „prasit“, ale jestli se to tak dělá, tak sem rád :), trochu jsem doufal, že to půjde podobně jako v symfony.

Marek Bartoš
Nette Blogger | 1173
+
0
-

Tak jako tak je to registrace na jeden řádek :) A nemusíš nic dělat jinak, než v aplikaci