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