Problém s proměnnými v emailu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Pert Jančálek
- Člen | 5
Ahojte, potřeboval bych pomoct s emaili v nette.
Z venku volám funkci sendKey, která vypadá následovně:
/**
* @param array $params
* @param string $email
*/
public function sendKey(array $params, $email)
{
$latte = new Engine(); // Latte\Engine
$template = $this->createTemplate();
$template->name = 'name';
$template->setFile(__DIR__ . '/mailTemplates/key.latte');
\Tracy\Debugger::barDump($params);
$mail = new Message;
$mail->addTo($email)
->setHtmlBody($latte->renderToString($template, $params));
$this->sendMailer->send($mail);
}
/**
* @return \Nette\Application\UI\ITemplate
*/
protected function createTemplate()
{
$template = $this->templateFactory->createTemplate(); // \Nette\Application\UI\ITemplate
$template->getLatte()->addProvider('uiControl', $this->linkGenerator); // $linkGenerator
// =>Nette\Application\LinkGenerator
return $template;
}
Dále potřebný kousek šablony:
<h1>Vítej, {$name}</h1>
<p>Děkujeme za registraci na naší síti.</p>
<p>Aktivuj si prosím účet pomocí odkazu níže</p>
<p class="center"> <a n:href="User:Check $route, $check_key" target="_blank">{link User:Check $route, $check_key}</a> </p>
Problém je ten, že mi to hlásí:
Undefined variable: route
Musím uznat, že to nechápu, protože $name se v pořádku najde (teda
doufám)
Zde je odkaz na kompletní screen + dump. https://ctrlv.cz/aeIk
Předem moc děkuji za všechny Vámi poskytnuté rady.
Editoval Pert Jančálek (13. 9. 2017 19:42)
- Martk
- Člen | 661
Do šablony nepředáváš proměnnou route, jen $template->name
Můžeš použít tohle:
$template->setParameters($params);
Nevytvářej instanci Latte\Engine, správně to má vypadat takhle:
$template = $this->createTemplate();
$template->setParameters($params);
$template->setFile(__DIR__ . '/mailTemplates/key.latte');
$mail = new Message;
$mail->addTo($email)
->setHtmlBody((string) $template);
$this->sendMailer->send($mail);