Ako vytvoriť dobre použiteľný addon
- romiix.org
- Člen | 343
Zdravím,
vytvoril som komponentu, ktorá je pre mňa užitočná, ale na môj vkus sa zložito konfiguruje. Mne osobne to až tak neprekáža, ale rád by som svoje riešenie poskytol ostatným:)
Ide o riešenie problému s JS a CSS – vďaka nemu sa mi vždy do
hlavičky vložia iba css a js ktoré sú aktuálne potrebné pre fungovanie
stránky.
Obsahuje upravený HeaderControl a novo vytvorený FileCollector – vďaka
robotloaderu bez problémov.
Konfiguruje sa to cez neon – tam problém nevidím.
Problém:
Zložitá konfigurácia z môjho pohľadu pozostáva hlavne z nutnej úpravy
BasePresenter.php
public function templatePrepareFilters($template)
{
$template->registerFilter($latte = $this->context->nette->createLatte());
$set = Nette\Latte\Macros\MacroSet::install($latte->compiler);
$set->addMacro('css' ...
...
}
a pre fungovanie v komponentách treba vytvoriť „medzikus“ medzi samotnú triedu komponenty a \Nette\Application\UI\Control a vložiť doňho obdobný ale nie totožný kód makier ako do BasePresenter-u.
Dá sa toto vyriešiť nejak pohodlnejšie?
Ďakujem.
- Filip Procházka
- Moderator | 4668
Doporučovaný postup je vytvořit vlastní rozšíření compileru a v něm už si pak snadno vlastní makro registruješ.
Pokud jediné co potřebuješ konfigurovat jsou makra, tak to je
oneliner a není na to potřeba ani rozšíření. – tohle funguje,
ale zatím to je jenom v masteru.
- romiix.org
- Člen | 343
HosipLan napsal(a):
Doporučovaný postup je vytvořit vlastní rozšíření compileru a v něm už si pak snadno vlastní makro registruješ.
Pokud jediné co potřebuješ konfigurovat jsou makra, tak to je oneliner a není na to potřeba ani rozšíření.
Ak tak pozerám, tak by sa teda aj načítanie makier dalo vyriešiť
neon-om. To znie ideálne:)
Jediný problém je, že potrebujem pre view a componentu rôzne makrá –
resp. definícia napr. makra css je rozdielna.
Potrebujem pri spracovaní získať cestu k šablóne. Vo view sa k tomu dá
dostať pomocou
$presenter->template->getFile()
a v šablóne komponenty
$template->getFile()
Ak sa mi podarí makrá prinútiť pracovať korektne v oboch prípadoch,
tak je to vyriešené.
Každopádne toto je už asi na iné vlákno. Osobne si myslím, že je to
dokonca bug.