Kompletni sablona pro email
- MartyIX
- Člen | 217
Delam si service pro posilani mailu a rikal jsem si, ze by nebylo spatne mit vsechna data pro mail nadefinovana v Latte sablone. Tj.
{* {block #from}{/block} *} <- mohlo by se hodit, pokud bych chtel prepsat vychozi hodnotu, kterou mam ulozenou v config.neon
{block #subject}{/block}
{block #text}{/block}
Jednoduse je mozne nechat zpracovat celou sablonu ulozenou v souboru:
$template = new Nette\Templating\FileTemplate($file);
$template->registerFilter(new Nette\Latte\Engine());
$template->setParams($data);
return (string) $template;
Je to mozne i po blocich? Tzn. nechat zpracovat sablonu vyse a moci se
dostat k obsahu bloku subject
a text
?
Diky!
- Filip Procházka
- Moderator | 4668
Mělo by to jít pomocí vlastních maker, zpracuješ šablonu a zároveň si přečteš co v ní bylo.
- David Grudl
- Nette Core | 8228
Udělat by se to mohlo, jen to chce vymyslet sympatické API, tj. jak by se to mělo používat.
- Filip Procházka
- Moderator | 4668
$template->__message = new Nette\Mail\Message;
$template->render();
{to franta@seznam.cz, pepa@seznam.cz, ondra@seznam.cz}
{* $__message->addTo('franta@seznam.cz')->addTo('pepa@seznam.cz')->... *}
{from $user->identity->email}
{* $__message->setFrom($user->identity->email) *}
{headers ponny => 'brony'}
{message}
Ahoj kluci, nezapomeňte v sobotu na to pivko.
{/message}
{* $__message->setHtmlBody(...) *}
Jenom takový nápad…
- MartyIX
- Člen | 217
https://github.com/…nette-iMail/ – tady je implementace napadu HosipLana.
Pridal jsem navic par drobnosti jako:
- {addHelper},
- auto-loading helperu,
- {require} pro vynuceni parametru sablony
Odeslani emailu pak vypada takto:
$iMail = new \MartyIX\Utils\Mail\iMail();
$m = $iMail->setTemplate(__DIR__ '/template.latte', array('company' => 'A* company'))
->setFrom('no-reply@test.com')
->setTo('test@test.com')
->setSubject('News from ...')
->send();
nebo jen:
{addHelper 'parenthesis', '\iMailTest::dummyParenthesisHelper'}
{from 'no-reply@test.com'}
{to 'you@serious.ly'}
{subject 'dummy subject'}
{message}
You have received the news letter from {$company}!
...
{/message}
$iMail = new \MartyIX\Utils\Mail\iMail();
$m = $iMail->setTemplate(__DIR__ '/template.latte', array('company' => 'A* company'))->send();
________________________________________________________________
Pouziti by melo byt jasne z testu, ktere najdete na GitHubu.
Editoval MartyIX (3. 12. 2011 18:57)