Odeslání latte šablony spolu s odkazy

Zakousl jsem se do studia frameworku Nette, který teď momentálně chci využít v jednom projektu. Narazil jsem na jednu chybu, a tak bych se s ní rád podělil, aby jste se s tím netrápili tak jako já.

Chtěl jsem využít latte šablonu a tu poslat emailem, nic zvláštního řeknete si. Po chvilce dle návodu ze stránek frameworku to začalo chodit, byl jen problém se zadáním cesty. Ale za chvíli nastalo několika hodinové pátrání potom, proč se nechtějí zpracovávat v šabloně odkazy (link). Dle návodu se má postupovat takto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$template = new Nette\Templating\FileTemplate('email.latte');
 
$template->registerFilter(new Nette\Latte\Engine);
 
$template->registerHelperLoader('Nette\Templating\Helpers::loader');
 
$template->orderId = 123;
 
$mail = new Message;
 
$mail->setFrom('Franta <franta@example.com>')
 
->addTo('petr@example.com')
 
->setHtmlBody($template)
 
->send();
$template = new Nette\Templating\FileTemplate('email.latte');

$template->registerFilter(new Nette\Latte\Engine);

$template->registerHelperLoader('Nette\Templating\Helpers::loader');

$template->orderId = 123;

$mail = new Message;

$mail->setFrom('Franta <franta@example.com>')

->addTo('petr@example.com')

->setHtmlBody($template)

->send();

Ale jak jsem z jistil v presenteru tento kód nechtěl fungovat správně a linky furt nechtěly fungovat. problém je v tom, že není třeba přidávat helpery ani filtry, chyba byla zde:

1
$template = new Nette\Templating\FileTemplate('email.latte');
$template = new Nette\Templating\FileTemplate('email.latte');

Kód stačilo pozměnit následujícím způsobem a bylo po problémech:

1
2
3
4
5
6
7
8
9
10
11
12
13
$template = $this->createTemplate();
 
$template->setFile(__DIR__.'emailTemplate.latte');
 
$mail = new Message;
 
$mail->setFrom('Franta <franta@example.com>')
 
->addTo('petr@example.com')
 
->setHtmlBody($template)
 
->send();
$template = $this->createTemplate();

$template->setFile(__DIR__.'emailTemplate.latte');

$mail = new Message;

$mail->setFrom('Franta <franta@example.com>')

->addTo('petr@example.com')

->setHtmlBody($template)

->send();

… a v latte šabloně:

1
<a href="{link //Homepage:}">odkaz</a>
<a href="{link //Homepage:}">odkaz</a>

se začalo chovat dle očekávání.

Framework není špatný, ale dokumentace dost pokulhává i když se v poslední době dost zlepšila. Kvalita projektu se dost odráží právě v dobré dokumentaci. Pokud si zkusíte vytvořit aplikaci dle tutoriálu na stránkách projektu, tak budete nemile zklamáni, že byť postupujete krok za krokem, tak aplikace nefunguje. Budete se muset potýkat s drobnými chybkami, ale člověk co má již něco za sebou naprogramováno si s tím dozajisté poradí. Co je dnes bez chybek? Nette je český framework a přeji mu dlouhou životnost a velkou komunitu uživatelů.