Ako vytvoriť template pomocou funkcie createTemplate()

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

Potrebujem to do e-mailu, ktorý odosielam, môj pokus:

$template = $this->createTemplate();
	    $template->render('email.latte');
  • tuna na stránke v dokumentácii v časti šablony úplne dole som našiel toto:
$template = $this->createTemplate();
$template->setFile('template.latte');
  • no nefunguje ani to, dokonca $template nepozná ani metodu setFile()..
Oli
Člen | 1215
+
0
-

Doc nepomuze?

lime
Člen | 55
+
0
-

Oli napsal(a):

Doc nepomuze?

No nepomohlo, vkuse mi píše, že chýba template file ‚email.latte‘ pričom ho mám v tom istom adresári ako @layout.latte

Oli
Člen | 1215
+
0
-

Nejsem si jistej, ale myslím, že ten latte soubor by měl být relativně od souboru, kde ho voláš nezávisle na @layout.latte

lime
Člen | 55
+
0
-

Kam ho potom dať? najprv som ho dal do Zložky Mail, a ani tak ho nechcelo nájsť:

('Mail:email.latte');

už som skúsil asi všetko..

Editoval lime (17. 12. 2013 22:29)

David Matějka
Moderator | 6445
+
0
-

dej tam absolutni cestu

lime
Člen | 55
+
0
-

matej21 napsal(a):

dej tam absolutni cestu

Napísal by si prosím ako?:) vdaka
//Edit: pri tých mailoch je popísané ako to vytvoriť cez new Nette\Templating\FileTemplate..; ale ja by som chcel vedieť, ako to vytvoriť v presentery cez metodu createTemplate()…(ako som napísal v úvode)

Editoval lime (17. 12. 2013 22:57)

saimons
Člen | 293
+
0
-

Dobre si je do index.php udelat konstantu napr MAIL_DIR, tak to delam ja. Pak das jen $template->render(MAIL_DIR . ‚/email.latte‘);

// absolute filesystem path to this web root
define('WWW_DIR', __DIR__);

// absolute filesystem path to the application root
define('APP_DIR', WWW_DIR . '/app');

// absolute filesystem path to the mail templates
define('MAIL_DIR', APP_DIR . '/mails');

Editoval saimons (17. 12. 2013 22:58)

Šaman
Člen | 2666
+
0
-

Anebo použij konstantu __DIR__ pro aktuální adresář. Tak to většinou používám já, pokud mám komponenty, nebo modely, které posílají emaily. Odesílání emailu přímo z presenteru, tak jak to mám v ukázce nebývá běžné, ale funguje to taky. Šablona je v tomto případě vedle šablony layoutu.

lime
Člen | 55
+
0
-

saimonsov kód mi nešiel, ale šamanov áno, teda tie adresy myslím:

$template = new Nette\Templating\FileTemplate(__DIR__. '/../templates/Mail/email.latte');

Takto som to spravil, a chcel som to cez to createTemplate() práve kôli tomu, že v šablóne potom môžem generovať odkazy lebo cez to new Nette\Templating… mi tam odkazy nejdú dať, cez createTemplate() áno.
Odesílání emailu přímo z presenteru, tak jak to mám v ukázce nebývá běžné → tak dá sa to nejako ináč aj s odkazmi?

David Matějka
Moderator | 6445
+
0
-
$template = $this->createTemplate();
$template->setFile(__DIR__. '/../templates/Mail/email.latte');
lime
Člen | 55
+
0
-

matej21 napsal(a):

$template = $this->createTemplate();
$template->setFile(__DIR__. '/../templates/Mail/email.latte');

No jasné, už to napísal šaman, ale napísal, že to nieje bežné ale budiš…a ešte otázka ohľadom tých odkazov, vie mi niekto napísať ako ich mám písať, pretože klasicky mi tam vypíše „bludy“

David Matějka
Moderator | 6445
+
0
-

ok, neprecet jsem si tvuj prispevek do konce :)

pokud chces v mailu pouzivat linky, je createTemplate() na presenteru bohuzel jediny rozumny reseni (jde to teda i jinak, ale je to komplikovanejsi – ja mam treba vytvoreny sluzby na vytvareni sablon, na vytvareni linku atd. ktery se obejdou bez presenteru)..

a ešte otázka ohľadom tých odkazov, vie mi niekto napísať ako ich mám písať, pretože klasicky mi tam vypíše „bludy“

nechapu, muzes trochu specifikovat?

lime
Člen | 55
+
0
-

matej21 napsal(a):

ok, neprecet jsem si tvuj prispevek do konce :)

pokud chces v mailu pouzivat linky, je createTemplate() na presenteru bohuzel jediny rozumny reseni (jde to teda i jinak, ale je to komplikovanejsi – ja mam treba vytvoreny sluzby na vytvareni sablon, na vytvareni linku atd. ktery se obejdou bez presenteru)..

a ešte otázka ohľadom tých odkazov, vie mi niekto napísať ako ich mám písať, pretože klasicky mi tam vypíše „bludy“

nechapu, muzes trochu specifikovat?

ok, neprecet jsem si tvuj prispevek do konce :)
V pohode :)

Špecifikovať..keď som dal do email.latte „klasický“ odkaz: <a n:href=„Homepage:default“>odkaz</a> tak by mi tam malo vypísať iba ten odkaz, ale vypíše mi tam aj všetky linky, ktoré mám v @layout.latte, ale pritom žiaden (ani „odkaz“) nefunguje, viem, že tam treba dať zase absolútnu adresu, skúšal som aj n:href=„__DIR__. ‚/../templates/Homepate/default.latte‘“ ale to isté..

David Matějka
Moderator | 6445
+
0
-

aha, asi to extenduje tu sablonu layoutem presenteru. zkus dat na zacatek souboru

{layout none}

a v n:href absolutni cesta k souboru co delat :)

lime
Člen | 55
+
0
-

ten layout už ide pekne diky, ale ten link sa nedá stlačiť

<a n:href="Homepage:default">link</a> //toto tam mám..
David Matějka
Moderator | 6445
+
0
-

specifikuj – vypise to nejakou chybu nebo co?

jiri.pudil
Nette Blogger | 1032
+
0
-

V mailu musíš samozřejmě odkazovat na absolutní URL:

<a n:href="//Homepage:default">link</a>