Odeslání emailu pomocí latte

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
mario85
Člen | 22
+
0
-

Zdravím všechny,
snažít se naučit nette. Jedu podle tutoriálu a dokumentace, celkem se vše daří. Teď jsem se zasekl u e-mailů, potřeboval bych asi nakopnout. V dokumentaci je následující příklad:

$latte = new Latte\Engine;
$params = array(
    'orderId' => 123,
);

$mail = new Message;
$mail->setFrom('Franta <franta@example.com>')
    ->addTo('petr@example.com')
    ->setHtmlBody($latte->renderToString('email.latte', $params));

a šablona:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Potvrzení objednávky</title>
    <style>
    body {
        background: url("background.png")
    }
    </style>
</head>
<body>
    <p>Dobrý den,</p>

    <p>Vaše objednávka číslo {$orderId} byla přijata.</p>
</body>
</html>

Tohle jsem rozjel. Pak jsem si chtěl přidat generování odkazů do emailu, takže jsem dle dokumentace upravil presenter:

use Nette;

class MyPresenter
{
    public function actionFoo()
    {
        $template = $this->createTemplate()->setFile('email.latte');
        $mail = new Message();
        $mail->setHtmlBody($template);
    }
}

což je super – odkazy fungují, ale nefunguje předání proměnných do šablony. Upravil jsem tedy:

use Nette;

class MyPresenter
{
    public function actionFoo()
    {
		$params = array(
    	'orderId' => 123,
		);

        $template = $this->createTemplate()->setFile('email.latte');
        $mail = new Message();
        $mail->setHtmlBody($latte->render($template, $params));
    }
}

ale tracy mi vypisuje Undefined variable: orderId

Dokážete mě prosím popostrčit? Díky :-)
Marek

pata.kusik111
Člen | 78
+
+1
-
use Nette;

class MyPresenter
{
    public function actionFoo()
    {

        $template = $this->createTemplate()->setFile('email.latte');
		$template->orderId = 123;
        $mail = new Message();
        $mail->setHtmlBody($template);
    }
}
Pavel Janda
Člen | 977
+
+1
-

@mario85 Doporučím pro odesílání emailů tento balíček. Každý mail je objekt dědící od základní třídy Mail. Šablony jsou vytvářeny automaticky – čeká se, že když je třída mailu v /mailing/ContactMail.php, bude šablona v /mailing/templates/contact_mail.latte. Parametry jsou také automaticky předávány do šablony.
Zároveň to samo loguje maily do .eml souboru (Pokud v konfiguraci neuvedeš jinak).

Kdybys to chtěl použít a na něco se zeptat, vše zodpovím.

mario85
Člen | 22
+
0
-

@pata.kusik111 díky moc, přesně tohle jsem potřeboval, funguje!

@PavelJanda tohle si asi nechám na později. Vypadá to dobře, ale zatím se snažím pochopit základy fw, takže si radši píšu věci sám. Ale časem se určitě bude hodit. Díky!