Filtr cdn nefunguje při použití přes renderToString()
- Mira8
- Člen | 36
Ahoj,
nedaří se mi zprovoznit filtr cdn v šablonce
thankYouForYourPaymentTrial.latte, vykresluji ji ručně, pro odesílání
emailem. Nemám tedy pro ní prosenter. Problém je, že v ní potřebuju
includovat header/footer, kde se filtr používá.
Mám takovouto šablonu:
{include 'header.latte'}
Thank you, ***
Best Regards,
***
</p>
{include 'footer.latte'}
Zpracovávám jí:
$message->setFrom($data['emailFrom'])
->addTo($data['emailTo'])
->setSubject('Thank you for your payment')
->setHtmlBody($latte->renderToString(__DIR__ . '/../presenters/templates/components/emails/thankYouForYourPaymentTrial.latte', $params));
Filtr:
class Filters
{
public static function cdn($sPath = '')
{
$cdnUrl = '1683442332436.rsc.org';
if (\Tracy\Debugger::$productionMode === false) {
return $sPath;
}
if ($sPath == '') {
return $cdnUrl;
}
if ($sPath[0] != '/') {
$sPath = '/'.$sPath;
}
return 'https://'.$cdnUrl.$sPath;
}
}
Filtr registruju globálně v BasePresenteru, ale dostávám chybu Filter ‚cdn‘ is not defined.
Díky za pomoc!
Míra
- Mira8
- Člen | 36
David Matějka napsal(a):
jak vytvaris
$latte
? kde ten filtr registrujes?
$latte vytvářím jako $latte = new Nette\Latte\Engine;
celý kód:
public function thankYouForPayment($data) {
$latte = new Nette\Latte\Engine;
$params = array(
'fullName' => $data['first_name'] . ' ' . $data['last_name'],
);
$message = new Nette\Mail\Message();
$message->setFrom('$data['emailTo']')
->addTo($data['emailFrom'])
->setSubject('Thank you for your payment')
->setHtmlBody($latte->renderToString(__DIR__ . '/../presenters/templates/components/emails/thankYouForYourPaymentTrial.latte', $params));
$mailer = new SendmailMailer();
$mailer->send($message);
}
filtr registruju v BasePresenteru takto:
protected function beforeRender()
{
$this->template->addFilter('cdn','Filters::cdn');
}
ten filtr normálně funguje, jen né při tom posílání emailu..
- David Matějka
- Moderator | 6445
Latte nevytvarej rucne, ale nech si pres DI predat factory https://api.nette.org/…Factory.html, pomoci ktere pak latte engine vytvoris
A takhle registrujes filtr pouze pro presentery, kdyz to chces mit globalne pro cele latte, tak muzes pouzit https://play.nette.org/…race-filteru
a btw, mailer taky nevytvarej rucne, ale nech si predat IMailer pres DI