Předání Presenteru do Latte

- David Zadražil
 - Člen | 62
 
Zdravím všechny,
mám napsané rozšíření na práci s odesíláním e-mailů. Registruji ho klasicky do DI v configu. Pak mám třídu Emailer, která dědí od Nette\Object a vní zpracováván nějaké ty šablony. No a teď potřebuji v té šabloně zpracovat makro {plink}, tak jsem si to hezky zaregistroval:
$latteEngine = new Latte\Engine();
$latteEngine->onCompile[] = function ($latte) {
        Nette\Bridges\ApplicationLatte\UIMacros::install($latte->getCompiler());
};
$this->message->setHtmlBody($latteEngine->renderToString($this->templateFile, $this->templateParameter));
Ale makro plink potřebuje ke své existenci presenter. A otázkou tedy zůstává, jak elegantně předat Presenter, aby to nebylo nijak prasácký.
Díky všem za rady.

- David Zadražil
 - Člen | 62
 
Tak Nextras/LinkFactory mi vrací prázdný string. Netuším proč, zaregistrovaný to mám, volám to takhle –
$this->linkFactory->link('Homepage:default')
				
- Šaman
 - Člen | 2668
 
Nextras/LinkFactory neznám, tak to zkusím od boku – nevrací prázdný
string, protože se jedná o defaultní routu? Jestli ano, tak vygeneruj
absolutní odkaz ->link("//Presenter:action"). Teda, takhle to
funguje v Nette, snad to bude analogické.
Resp. v mailu vždy používej absolutní odkazy.
Editoval Šaman (6. 11. 2014 14:40)

- David Zadražil
 - Člen | 62
 
To jsem zkoušel, ale bohužel ani to nefunguje. Mělo by to vrátit alespoň lomítko ne? Nevrací to bohužel nic :-) Nenepadá tě nějaká jiná finta jak do e-mailové šablony dostat linky?

- Jan Tvrdík
 - Nette guru | 2595
 
Jestli to vrací prázdný string, tak skoro určitě je špatně buď routování nebo cíl toho odkazu. Případně to reportuj jako bug a dořeším to s tebou na GitHubu.

- David Zadražil
 - Člen | 62
 
Tak už jsem doma, zapomněl jsem uvést modul. Takže správně bylo –
$this->linkFactory->link('//Front:Homepage:default')
					Editoval David Zadražil (6. 11. 2014 15:33)

- Šaman
 - Člen | 2668
 
Jinak jako fintu, jak do emailové šablony dostat linky, používám
template factory presenteru, nebo komponenty, která tyto emaily bude odesílat.
Takže: $emailTemplate = $this->createTemplate(); a pak s ní
pracuji jak jsem zvyklýz normálních šablon. Nemusím ani registrovat makra,
latte, všechno tam je.