Několik otázek k mailům v Nette

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

Mám několik otázek k mailům v Nette. Chci posílat maily s pomocí šablon latte.

  1. Chci posílat maily v modelu, všude vidím návod, jak to posílat přes presenter. Jak docílím toho, abych tam mohl používat sestavování linků apod.?
  2. Rád bych měl možnost ty šablony mailů editovat v administraci. Nechci to ale řešit tak, že bych ukládal ty maily do souborů. Raději bych je viděl v databázi. Umožňuje Nette, něco takového, že předhodím text a Latte ho přechroupe, doplní proměnné apod? Případně jak řešit lépe možnost editace uživatelem.
  3. Jde v šablonách pro maily používat i layout? Zkrátka abych měl nějakou hlavičku, patičku a měnil jen střed?

Díky

David Matějka
Moderator | 6445
+
0
-
  1. https://forum.nette.org/…-orchestrace#…
  2. viz https://doc.nette.org/cs/mail#… s tim, ze misto FileTemplate pouzijes jen Template a pomoci setSource nastavis latte
  3. makro layout
Tomáš Votruba
Moderator | 1114
+
0
-

Pěkné požadavky :) 1., 2. u 3. řeším pomocí vlastní Message

1. řeším pomocí TemplateFactory, ale možná postačí i něco takového:

$template = new Nette\Templating\FileTemplate;
$template->registerFilter(new Nette\Latte\Engine);

3. „layout“ zmíněný v mé Message výše vypadá takto

Editoval Tomáš Votruba (21. 2. 2014 23:49)

Jiří Nápravník
Člen | 710
+
0
-

Díky za reakce. Líbí se mi řešení od @matej21, nevěděl jsem, že si můžu takhle pěkně nastavit vlastní source pro latte. Protože tam můžu pěkně využívat i helpery apod.

Ovšem mám tu ještě jeden problém, makro layout funguje pouze s FileTemplate. Je to nějak řešitelné?

A ještě otázka ohledně těch URL, použil jsem ten UrlGenerator od Tebe, ale nějak ho nemohu zprovoznit.

Dal jsem ho jen do config.neon a pak si ho injectnul tam kam potřebuju. Jenže začlo to řvát, že není service URL, tak jsem si konstruktor upravil takto:

public function __construct(Request $request, Application\IRouter $router)
{
	$this->refUrl = new Url($request->getUrl());
	$this->router = $router;
}

ale když zavolám :User:Front:User:register ,což jinde v pohodě funguje, tak dostanu InvalidLinkException, že neexistuje: User:Front:User:register:register()

Editoval Jiří Nápravník (22. 2. 2014 2:21)

David Matějka
Moderator | 6445
+
0
-

s tou template je to zajimavy :) ted me nic rozumnyho nenapada (nez rucne precist layout a spojit to v jeden retezec)…

k linku: to register:register je tam divny, posilas tam ten parametr spravne? muzes kdyztak nekam hodit celou ladenku?

Jiří Nápravník
Člen | 710
+
0
-

Mě napadlo ještě udělat pak FileTemplate a vložit tam tenhle výstup s noescape helperem to by teoreticky šlo ne?

Laděnka je tady. Který parametr myslíš? Ten „odkaz“ na action. Jj, posílám to jsem schválně kontroloval jako první a zkopíroval odjinud, kde mi to generuje dobře.

Jinak jedu na 2.1.1 stable

David Matějka
Moderator | 6445
+
0
-

opraveno, na tom radku misto $destination ma byt $presenter

Jiří Nápravník
Člen | 710
+
0
-

Super, díky moc, funguje!

greeny
Člen | 405
+
0
-

Tomáš Votruba napsal(a):

Pěkné požadavky :) 1., 2. u 3. řeším pomocí vlastní Message

Koukal sem se na kód… „public function __constructor“ ??? Není to trochu překlep?

Tomáš Votruba
Moderator | 1114
+
0
-

@greeny: Ano, díky.

@matej21: Mohl bys z toho UrlGeneratoru udělat composer balíček? Myslím, že to má potenciál.