Odeslání emailu pomocí latte

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!

RSS tématu Téma zavřeno