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
+
0
-

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
+
+3
-

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);