Jak generovat šablony pro email v nette 2.2

- Budry
 - Člen | 88
 
Jediný způsob, který se mi podařilo najít je tento:
class MyService extends Object
{
	private $latteEngine;
	public function __construct(ILatteFactory $latteFactory)
	{
		$this->latteEngine = $latteFactory->create();
	}
	public function foo()
	{
		// *****
		$template = new Template($this->latteEngine);
		$template->setFile('');
		$message = new Message();
		$message->setHtmlBody($template);
		// ****
	}
}
Je tohle tedy správný způsob jak předat emailu vlastní šablonu?

- h4kuna
 - Backer | 741
 
Napsal jsem si MailManager přijímá servisu nette.template takže záleží na nette co bude v pozadí.

- Tomáš Votruba
 - Moderator | 1114
 
@duke: Napsal jsem tam odpověď
@Budry: ILatteFactory je víceméně
bridge pro Application. Můžeš tedy použít rovnou šablonu
presenteru. V tomto případě budeš mít šabloně pro email veškeré
filtry/makra, která máš dostupná v šabloně presenteru/komponent.
Pokud chceš použít Latte úplně samostatně (tedy bez
Application či MVC), můžeš
Zvaž smysl tohoto řešení.

- Jan Folwarczny
 - Člen | 10
 
@bazo:
Ahoj, já to řeším ve třídě, která vytváří maily, zhruba takto:
/**
 * @var \Nextras\Application\LinkFactory
 */
private $linkFactory;
/**
 * @var \Nette\Bridges\ApplicationLatte\ILatteFactory
 */
private $latteFactory;
/**
 * @var Filters
 */
private $filters;
public function createMessage()
	$latte = $this->latteFactory->create();
	$this->filters->addTo($latte);
	$template = new \Nette\Bridges\ApplicationLatte\Template($latte);
	$template->linkFactory = $this->linkFactory;
	$template->setFile(__DIR__ . '/sablona.latte');
	$message = new \Nette\Mail\Message;
	$message->setHtmlBody($template);
	…
	return $message;
}
V latte šabloně pro maily nepoužívám macro {link …}, ale
{$linkFactory->link('…')}.
Třída Filters metodou addTo($latte) přiřadí všechny latte filtry, které
v mailech potřebuju.

- newPOPE
 - Člen | 648
 
bazo napsal(a):
ale to mi pride ako taky workaround a nie pekne riesenie. ja to riesim TemplateFactory ale potom je problem s odkazmi. Na tie mam spravenu sluzbu Linker co je vlastne taky vypreparovany router. Chcelo by to ale nejake systemove riesienie
Dovody preco je to workaround?