Registrace filtru definovaného v config do šablony emailu
- premek_k
- Člen | 172
Ahoj,
mám definován filtr v config.neon:
services:
nette.latteFactory:
setup:
- addFilter('fooFilter`, @Filters\FooFilter)
Tento filtr se mi však automaticky neregistruje do šablony emailu:
:
$template = new Nette\Templating\FileTemplate(ROOT . '/app/templates/Email/foo.latte');
$template->registerFilter(new Nette\Latte\Engine);
$template->registerHelperLoader('Nette\Templating\Helpers::loader');
:
Poradíte mi prosím, jak (nejlépe a správně) do emailové šablony zaregistrovat ten fooFilter?
- Jan Tvrdík
- Nette guru | 2595
Zkoušel jsi použít tu službu nette.latteFactory
, kterou
konfiguruješ přes config.neon
?
- premek_k
- Člen | 172
@JanTvrdík https://www.youtube.com/watch?…
Jak?
Editoval premek_k (21. 6. 2016 17:37)
- Jan Tvrdík
- Nette guru | 2595
Zkus si přes autowiring injektnout instanci
Nette\Application\UI\ITemplateFactory
a pak to použiješ jako
$template = $this->templateFactory->createTemplate();
$template->setFile(__DIR__ . '/your-template.latte');
$template->render();
- premek_k
- Člen | 172
@DavidMatějka mám verzi 2.3.0
@CZechBoY vytvářím ji tak, jak je uvedeno v mém prvním příspěvku. Je to nějaké zřejmě starší řešení (pořád však funkční), normálně to dělám dle dokumentace.
@JanTvrdík to by asi šlo, ale:
- nevím, jak předat data do šablony
- nevím, jak „naroubovat“ do setHtmlBody, $template->render() je void
:
/** @var ITemplateFactory @inject */
public $templateFactory;
:
:
$message = new Nette\Mail\Message;
$mailer = new Nette\Mail\SendmailMailer;
$template = $this->templateFactory->createTemplate();
$template->setFile(ROOT . '/app/templates/Email/email.latte');
$params = [
'foo' => 'Test',
];
$message->setFrom($from)
->addTo($to)
->setSubject($subject)
->setHtmlBody(??? $template->render() ???);
$mailer->send($message);
- Jan Mikeš
- Člen | 771
/** @var ITemplateFactory @inject */
public $templateFactory;
// ...
$template = $this->templateFactory->createTemplate();
$template->setFile('templates/Email/email.latte');
$template->myVariable = "abcd"; // v sablone dostupne jako $myVariable
$message = new Nette\Mail\Message;
$message->setFrom($from)
->addTo($to)
->setSubject($subject)
->setHtmlBody($template);
$mailer->send($message);
Zde je ukazano jak predat data do sablony i jak predat emailu template.