E-Mail Template über Plugin mit Variablen im Content

Hallo zusammen,

ich bin gerade dabei ein Plugin zu schreiben, welches ein E-Mail Template anlegt.
Die Funktion an sich sieht ca. so aus und funktioniert auch problemlos:

protected function createMailTemplate()
{
    $em = $this->container->get('models');
    if(!$repository) {
        $repository = $em->getRepository(Mail::class);
    }
    $mail = $repository->findOneBy(['name' => 'sMEINEMAILTEMPLATE']);
    if(!$mail) {
        $content = $this->getHtmlMailContent();
        $mail = new Mail();
        $mail->setName('sMEINEMAILTEMPLATE');
        $mail->setFromMail('{config name=mail}');
        $mail->setFromName('{config name=shopName}');
        $mail->setSubject("Hier kommt der Titel!");
        $mail->setContentHtml($content);
        $mail->setIsHtml(1);
        $mail->setMailtype(Mail::MAILTYPE_SYSTEM);

        $em->persist($mail);
        $em->flush($mail);
    }
}

Das Problem habe ich nun im Content selbst.
In meiner $content Variable steht irgendwo im Text sowas wie folgendes:

protected function getHtmlMailContent() [
    $content = "[...]
                 Hier klicken
                [...]";
    return $content;
}

Nun wird aber die $sShopURL Variable scheinbar zu früh “verarbeitet” da im Backend anschließend nur noch das “/MeinPluginController” im HREF steht.
Hier sollte aber natürlich {sShopURL} stehen. Ich habe auch schon versucht das Zeichen in Unicode als $ anzugeben, aber auch hier natürlich nicht der gewünschte Effekt.

Jetzt stellt sich mir die Frage, kann ich überhaupt direkt beim Erstellen des E-Mail Templates (innerhalb meines Plugins) die entsprechenden E-Mail Variablen verwenden damit die direkt dort stehen wo sie sollen und wenn ja, was mache ich falsch :wink: ? Oder bleibt mir nur die entsprechenden Variablen übers Backend nachzupflegen, nachdem das E-Mail Template vom Plugin erstellt wurde?

Vielen Dank.

Ok das Thema hat sich erledigt … da hätte ich auch früher drauf kommen können :smiley:

Für diejenigen die das gleiche Problem haben sollten:

$content = "[...]Hier klicken[...]";

Einfach das $ mit einem \ escapen.

Oder wenn es viele Zeichen zu maskieren gibt, dann die HEREDOC Syntax nutzen: http://php.net/manual/de/language.types.string.php#language.types.string.syntax.heredoc

1 Like