V šabloně emailu nefungují helpery
- SvvimX
- Člen | 65
Ahoj,
v modelu
COrderManager :: create ( \CBasket $basket );
potřebuji odeslat email. Aktuálně tam mám:
$template = new Nette\Templating\FileTemplate;
$template -> registerFilter ( new Nette\Latte\Engine );
$template ->setFile( TEMPLATES_DIR . '/email-order.latte' );
a v šabloně
...
<td>{$item -> getPrice()|number:2:',',' '} {_}Kč{/_}</td>
...
Tento zápis ale vyhodí chybu: Call to undefined method Nette\Templating\FileTemplate::number()
Jak to mám udělat, aby helepry začali fungovat? Nebo nechat odesílat mail
model je špatně, mám raději vrátit true a v presenteru při správně
uložené objednávce do DB odeslat email? Protože v dokumentaci https://doc.nette.org/cs/mail dole
v komentářích je
… nefungují standardní helpery. Napravit se to dá tím, že se místo toho
použije:
$template = parent::createTemplate();
$template->setFile('email.latte');
Díky za radu
Edit: Ale raději bych ponechal odesíláni v modelu, kde nemusím řešit z jakého presenteru přišla žádost o změnu stavu objednávky. Některé dělá admin, některé může dělat zákazník. Je lepší mít to na jednom místě v jedné funkci (při nejhoríšm si helepr number zaregistruji ručně..)
Editoval SvvimX (20. 8. 2012 23:39)
- Vojtěch Dobeš
- Gold Partner | 1316
Lattečko zprovozňuje makra, helpery jsou něco jiného. Doplň si:
$template->registerHelperLoader('Nette\Templating\Helpers::loader');
Důvod, proč to funguje přes to parent
volání, je metoda
Nette\Application\UI\Control::createTemplate()
, kde se tohle volá.
Takže získávat instanci šablony tímto způsobem je spíš hack.