vygenerovani listu odkazu presenter:method
- dehtak
- Člen | 113
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
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
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
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.
- Marek Bartoš
- Nette Blogger | 1263
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
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
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
@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
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
@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.
- Marek Bartoš
- Nette Blogger | 1263
Z 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/#…