vygenerovani listu odkazu presenter:method

dehtak
Člen | 113
+
0
-

Zdravim jde nejak vygenerovat list presenteru a metod ?
Home:default
Pages:view
Kontakt:default atd.....

Nette vi jaky presentery mam. Jen je otazka jak z nej dostat ty informace.

Jde mi o to ze to chci pouzit pro ukladani do databaze v administraci.
Ze si chci urcovat ze na teto strance se bude zobrazovat to a na jine se bude zobrazovat ono.
A pak vypisovat treba hlavicky SEO nebo obsah nebo carousel podle toho jaka stranka bude volana.

"SELECT * FROM seo WHERE link = ?", $this->getName().':'.$this->getAction()

Potrebuju jen nakopnout ja uz si to napisu kdyz tak sam.

Editoval dehtak (3. 7. 2022 10:55)

Marek Bartoš
Nette Blogger | 1263
+
0
-

Potřebuješ mít všechny presentery registrované v DI a pro každou akci definovanou action nebo render metodu, podle šablon to akce nehledá.

https://github.com/…ationMap.php
https://github.com/…xtension.php#…

Editoval Marek Bartoš (3. 7. 2022 15:40)

dehtak
Člen | 113
+
0
-

Nejde to nainstalovat
[InvalidArgumentException]
Could not find a version of package orisai/nette-application matching your minimum-stability (stable). Require it w
ith an explicit version constraint allowing its desired stability.

Rad bych podekoval ale za neco co je funkcni, jinak nete mam 3.0

Editoval dehtak (3. 7. 2022 11:30)

Marek Bartoš
Nette Blogger | 1263
+
0
-

Dávám ti možnost si z toho zkopírovat tu důležitou, odkazovanou část, ne hotové řešení.
Není to stable, takže i kdyby sis povolil instalování dev verzí, tak můžeš očekávat před releasem BC breaky.

dehtak
Člen | 113
+
0
-

Ok podivam se na to. A diky

Marek Bartoš
Nette Blogger | 1263
+
0
-

Upravil jsem kód, abys ho mohl použít.

Dev verzi nainstaluješ tak, jak ti říká Composer, kupříkladu composer require orisai/nette-application:^1.0.0. Funguje i minimum-stability: dev a prefer-stable: true v composer.json, aby ti to fungovalo pro všechny balíky

V dokumentaci najdeš jak zaregistrovat application map. Měl bys potom mít dostupnou službu ApplicationMap

Též budeš potřebovat zaregistrovat custom PresenterFactory, v dokumentaci sekce Presenter mapping. Pokud už custom PresenterFactory máš, tak ti to nejspíš nebude fungovat. A nejsem si jistý, zda budeš muset registrovat custom callback nebo to půjde bez něj.

Pokud ti v ApplicationMap bude něco chybět, tak napiš. Je to řešené pro debug panel, ne pro tvůj use case.

dehtak
Člen | 113
+
0
-

No ja z toho pouzil jen neco, a funguje to. U toho tvyho kodu sem mel problem PresenterFactory. Ten sem uplne vynechal .
Mala technicka otazka jak nactu v extension z konfiguracniho souboru neon Aplication >> maping.

ted to mam tak krkolomne udelany

parameters:
	appmapping:
		Front: Front\Presenters\*Presenter
		Admin: Admin\Presenters\*Presenter

application:
	errorPresenter: Front:Errors
	mapping: %appmapping%

extensions:
	appMap: AppMap\Extension(%appmapping%)

az to bude hotovy hodim sem kod

Editoval dehtak (3. 7. 2022 17:56)

Marek Bartoš
Nette Blogger | 1263
+
0
-

Co jsi měl za problém s PresenterFactory? Nic to nedělalo / hlásilo ti to chybu?

Config z extension bys získal takto, ale nepokryješ tím výchozí nastavení mappingu a nastavení mappingu přes setup služby.

foreach ($this->compiler->getExtensions(ApplicationExtension::class) as $extension){
	return $extension->getConfig();
}

throw new \Exception('');

Případně se dá v beforeCompile() získat argumenty z nastavení služby application.presenterFactory. Ale moc mi to nedává smysl, používat mapping bez PresenterFactory

Marek Bartoš
Nette Blogger | 1263
+
0
-

@dehtak Přidal jsem extension, která custom PresenterFactory zaregistruje.

Mělo by ti stačit přidat do neonu tenhle config, aby ti ApplicationMap fungovala.

extensions:
	orisai.application.map: OriNette\Application\ApplicationMap\DI\ApplicationMapExtension
	orisai.application.presenterFactory: OriNette\Application\Mapping\DI\PresenterFactoryExtension

Editoval Marek Bartoš (4. 7. 2022 12:04)

dehtak
Člen | 113
+
0
-

No prave jsem nevedel jak tam dostat ten tvuj presenterFactory
Nette presenterFactory tam ma sice taky metodu unformatPresenterClass ale ma ji blokloklou.
Ted koukam ale ta extension pro ten presenterFactory tam neni
"":https://github.com/…/src/Mapping

Editoval dehtak (5. 7. 2022 11:15)

Marek Bartoš
Nette Blogger | 1263
+
0
-

@dehtak Koukáš na kód z konkrétního commitu co jsem poslal, aby odkazy fungovaly třeba i za rok. Ve větvi ta extension je.

dehtak
Člen | 113
+
0
-

Projel jsem to cely, ani ta dokumentace jak si psal, ani ta extension tam neni. Bud sem slepej nebo blbej
hod sem prosim kod ty extension nebo aspon odkaz

Editoval dehtak (5. 7. 2022 11:51)

Marek Bartoš
Nette Blogger | 1263
+
0
-

hlavní stránky proklik na „documentation“, sekce „presenter mapping“

Musíš koukat, jakou větev/tag/commit máš zrovna zobrazený. GitHub na to má v UI přepínač https://www.howtogeek.com/…s-in-github/#…

dehtak
Člen | 113
+
0
-

Me ten github prijde strasne neprehlednej, dik uz to mam.
Frci to paradne jeste to trosku profiltruju a bude to paradni. Dik

Editoval dehtak (5. 7. 2022 12:57)