$baseUri a $basePath v šabloně komponenty

Alsatian
Člen | 163
+
0
-

Ahoj. Dle příkladu níže odesílám emaily s latte šablonou $latte->renderToString..
Rád bych v této šabloně použil {baseUri} a {basePath}. Víte někdo o jednoduchém řešení?
Moc děkuji.

<?php

use Nette\Application\LinkGenerator;
use Nette\Bridges\ApplicationLatte\ILatteFactory;
use Nette\Mail\IMailer;

class MailSender
{
    /** @var LinkGenerator */
    private $linkGenerator;

    /** @var ILatteFactory */
    private $latteFactory;

    /** @var IMailer */
    private $mailer;


    function __construct(LinkGenerator $generator, ILatteFactory $latteFactory, IMailer $mailer)
    {
        $this->linkGenerator = $generator;
        $this->latteFactory = $latteFactory;
        $this->mailer = $mailer;
    }

    function sendEmail()
    {
        $latte = $this->latteFactory->create();

        // nainstalujeme do $latte makra {link} a n:href
        Nette\Bridges\ApplicationLatte\UIMacros::install($latte->getCompiler());
        $latte->addProvider('uiControl', $this->linkGenerator);

        //$order = ...;
        $params = [
            'name' => $order->getName(),
            // ...
        ];
        $html = $latte->renderToString(__DIR__ . '/email.latte', $params);

        $mail = new Nette\Mail\Message;
        $mail->addTo($order->email);
        $mail->setHtmlBody($html);

        $this->mailer->send($mail);
    }
}
David Matějka
Moderator | 6445
+
+3
-

Viz template factory, kde vidis, jak se vytvareji. nebo rovnou muzes pouzit onu TemplateFactory namisto latte factory :)

Alsatian
Člen | 163
+
0
-

@DavidMatějka Přísahám, že jsem se na to, jak se vytvářejí díval :D Ale hlava mi nebere, jak to tam zapracovat :D Jdu to ale zkusit… tak nevím jak na to :)

Editoval Alsatian (8. 10. 2018 9:49)

Šaman
Člen | 2632
+
-2
-

Myslím, že jsem kdysi používal (v presenteru nebo komponentách) $template = clone $this->template; pak jsem té nové šabloně přiřadil .latte soubor a nadále používal již nakonfigurovanou $template pro mail.
Ale čisté to úplně není.

Editoval Šaman (8. 10. 2018 10:14)

CZechBoY
Člen | 3608
+
+1
-

@Šaman to už radši zkopírovat jen ty požadované proměnné

$emailTemplate->baseUrl = $this->template->baseUrl;
$emailTemplate->baseUri = $this->template->baseUri;
Milo
Nette Core | 1283
+
+1
-

@Alsatian A k čemu ty parametry vlastně potřebuješ? To výsledné HTML odejde emailem a aby to klient zobrazil, musí mít URL absolutní. Proto se používá LinkGenerator.

Alsatian
Člen | 163
+
+1
-

@Milo – v předmětu a v textu zprávy chci uvézt ze které domény je web odeslán – nazevdomeny.cz
Šel jsem na to každopádně složitě a špatně. Vyřešeno posláním si proměnné s názvem webu „Název webu“ jako proměnné získané z Config.neon a linky pomocí linkGenerator :)

Díky všem!