Ich möchte gerne in der Bestellbestätigungs-Mail zusätzliche Daten anzeigen, die in der Datenbank mit Referenz der bestellten Artikel-IDS abgelegt sind. Ich habe mir dazu eine extra Tabelle extra_infos angelegt in der die Felder artikel_id und information vorhanden sind. Ein Beispieleintrag wäre dann zum Beispiel (1a50a6b74c7f42bba47e435a4f042134, “Eine zusätzliche Information”). Wenn der Kunde den Artikel 1a50a6b74c7f42bba47e435a4f042134 bestellt, dann will ich in der Email-Bestellbestätigung zusätzlich zu Artikeldaten wie name, Preis usw. “Eine zusätzliche Information” übergeben und anzeigen.
Aktuell habe ich einen Subscriber auf dem Event MailBeforeValidateEvent gesetzt und kann hier zumindest zusätzliche Daten an das Template übergeben:
public static function getSubscribedEvents(): array
{
return [
MailBeforeValidateEvent::class => 'sendMail',
];
}
public function sendMail(MailBeforeValidateEvent $event): void{
$data = $event->getTemplateData();
$data["test"] = "hey";
$event->setTemplateData($data);
}
Im Email-Template kann ich dann zum Beispiel mit {{test}} den Inhalt meiner Variablen ausgeben lassen - das klappt schonmal.
Leider muss ich aber Daten aus der Datenbank laden die von den Artikel-IDS in der Bestellung des Kunden abhängen. Das Event MailBeforeValidateEvent beinhaltet soweit ich das gesehen habe keine Daten zur Bestellung und den bestellten Artikeln. Ich habe zumindest herausgefunden, dass in der Datenbank-Tabelle mail_template_type eine Spalte available_entities enthalten ist. Mein Verständnis ist, dass die Daten, die in der Spalte angeben sind (zum Beispiel bei der Bestellbestätigung “order” Daten), irgendwie an das Mail-Template übergeben werden. An welcher Stelle passiert das Laden und übergeben der (Order)-Daten an das Template? An welcher Stelle kann ich einhaken und abhängig von der Artikel-ID des bestellten Artikels meine zusätzlichen Informationen aus der Tabelle extra_infos mit übergeben?
Eventuell habe ich auch etwas übersehen und ihr habt eine Idee, wie ich im Event MailBeforeValidateEvent die bestellten Artikel-IDS bekommen kann?