Shopware setzt bekanntlich auf dem Framework Symfony auf und bedient sich zum senden von Mails dem SwiftMailer. Gesetz dem Fall wir möchten zum Beispiel vor, oder nach dem Senden der Mail, noch weitere Funktionen einbauen. Wir legen hierzu ein Plugin an und erstellen unter dem src Ordner das Verzeichnis Mailer. Hier wird unser Listener erstellt, wie folgt:
<?php declare(strict_types=1);
namespace Plugin\Demo\Mailer;
use Swift_Events_SendEvent;
use Swift_Events_SendListener;
class MailListener implements Swift_Events_SendListener
{
/**
* @param Swift_Events_SendEvent $evt
*/
public function beforeSendPerformed(Swift_Events_SendEvent $evt)
{
// Do whatever you want to
}
/**
* @inheritDoc
*/
public function sendPerformed(Swift_Events_SendEvent $evt)
{
// Do whatever you want to
}
}
Ist dies passiert muss der von Listener noch in der Datei src/Resources/config/services.xml registriert werden, damit das System auch damit arbeiten kann.
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="Plugin\Demo\Mailer\MailListener">
<tag name="swiftmailer.default.plugin"/>
</service>
</services>
</container>