Předání obsahu komponenty do emailu

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

Potřebuji z komponenty která generuje email a zobrazuje ho zároveň dostat html které připojím do mailu a odešlu ho.

V komponentě jsem překryl metodu createTemplate kterou volám z další komponenty která mi pak kód odešle.

public function createTemplate($class = NULL)
	{
		$template = parent::createTemplate($class);
		$template->setFile(__DIR__ . DIRECTORY_SEPARATOR . "OrderEmailGenerator.latte");

		$template->products = $this->products;
		$template->billAdress = $this->billAdress;
		$template->clientAdress = $this->clientAdress;

		$template->billNumber = $this->parameters["bankNumber"];
		$template->bankCode = $this->parameters["bankCode"];

		$template->projectName = $this->parameters["emailProjectName"];
		$template->projectMail = $this->parameters["emailProjectEmail"];

		return $template;
	}

A v druhé komponentě na místě kde potřebuji vzít html podobu komponenty a poslat email to volám takto:

$mailGenerator = new OrderEmailGenerator();
			$mailGenerator->setOrderInfo($writeProducts, $billAdress, $clientAdress, $payments);
			$mailGenerator->parameters = $this->parameters;
			$htmlEmail = $mailGenerator->createTemplate();

			//Odeslani mailu uzivateli
			$email = new Message;
			$email->setFrom($this->parameters["emailOrderFrom"])
					->addTo("some@mail.com")
					->setHtmlBody($htmlEmail)
					->send();

Takhle to bohužel ale skončí chybou Component '' is not attached to 'Nette\Application\UI\Presenter

peter.z
Člen | 37
+
0
-

V tej druhej komponente si vytvor tu prvu nasledovne:

protected function createComponentOrderEmailGenerator()
{
	return new OrderEmailGenerator(); // predpokladam ze tak sa vola tvoja 1. komponenta
}

A teraz uz staci upravit tu funkciu na posielanie emailov nasledovne:

$mailGenerator = $this["orderEmailGenerator"];
$mailGenerator->setOrderInfo($writeProducts, $billAdress, $clientAdress, $payments);
$mailGenerator->parameters = $this->parameters;
$htmlEmail = $mailGenerator->template; // Nemusis volat createTemplate, ten sa zavola sam ked si zavolas sablonu

//Odeslani mailu uzivateli
$email = new Message;
$email->setFrom($this->parameters["emailOrderFrom"])
	->addTo("some@mail.com")
        ->setHtmlBody($htmlEmail)
        ->send();