Použití proměnné v mailu (Nette 2.3)
- Lcicatka
- Člen | 2
Zdravím,
snažím se přijít na to, jak zahrnout do mailu proměnnou v textu z databáze.
Problém je v tom, že „Vaše objednávka <font color="red“>
{$OrdId} </font> ....." mi v mailu sice správně obarví text na
červeno, ale už nepřeloží proměnnou {$OrdId} (vypíše „{$OrdId}“
místo „10“).
Pokud text „Vaše objednávka <font color="red“> {$OrdId}
</font> ....." vložím přímo do souboru test.latte, proměnnou to
přeloží správně.
Máte s tím prosím někdo nějaké zkušenosti, případně tipy, jak to vyřešit?
Předem díky za jakoukoliv pomoc.
Presenter vypadá takto:
$mailDB = $this->db->query("SELECT * FROM ConfMail WHERE ConfMailid = 20")->fetch();
$params["message"] = $mailDB->ConfMailText;
$params["OrdId"] = 10;
$latte = new \Latte\Engine;
$mail = new Message;
$mail->setFrom("test@volny.cz")
->addTo('Lcicatka@seznam.cz')
->setSubject('Test')
->setHtmlBody($latte->renderToString(__DIR__ . '/../presenters/templates/Mail/test.latte', $params));
$mailer = new SendmailMailer;
$mailer->send($mail);
test.latte vypadá takto:
{$message |noescape}
$mailDB->ConfMailText (tedy $message) vrací:
Vaše objednávka <font color="red"> {$OrdId} </font> .....
- jiri.pudil
- Nette Blogger | 1032
Latte ten text z proměnné prostě jen vypíše, byť bez escapování;
nijak ho rekurzivně nepřekládá. Zkusil bych použít
StringLoader
a ten text přeložit přímo:
$latte = (new Latte\Engine())
->setLoader(new Latte\Loaders\StringLoader());
$body = $latte->renderToString($mailDB->ConfMailText, $params);
- CZechBoY
- Člen | 3608
Případně si vyžádat ITemplateFactory
a potom vyrenderovat šablonu buď přes (string)$template
, nebo
kombinací funkcí ob_start+ob_get_clean.
Editoval CZechBoY (13. 12. 2016 15:50)