Wir versuchen die Funktion createDataIO in der DataFactory des Plugins SWAGImportExport zu hooken. Diese Klasse implementiert zwar das Interface Enlight_Hook, Versuche auf das Event Shopware_Components_SwagImportExport_Factories_DataFactory::createDataIO::replace zu hooken, schlägt aber fehl. Auch das Event DataFactory::createDataIO::replace, wird nicht aufgerufen. Wie lautet das korrekte Event und wo in der Dokumentation ist Beschrieben wie sich die Eventnamen zusammensetznen? Im nachfolgenden Artikel ist das leider sehr spärlich beschrieben und - so scheint uns - veraltet:
Hi Shyim!
Vielen Dank für deine Antwort. Ich habe gerade nachgeschaut und konnte keine Superklasse namens Enlight_Hook finden. Lediglich ein Interface. Das habe ich ebenfalls noch extended, was aber keinen Unterschied macht, da es ohnehin leer ist.
Das Decorator-Pattern hat mir leider nur bedingt weitergeholfen, da die Shopware Dokumentaion ausschließlich auf Services eingeht. Einen grundlegenden Unterschied von meinem Code, zu dem in der Dokumentation kann ich nicht finden - abgesehen davon, dass es um Services geht. Meinen Subscriber findest du hier:
<?phpnamespace WavExportExtension\Subscriber;use Enlight\Event\SubscriberInterface;
use Enlight_Hook;
use Shopware\Components\SwagImportExport\DbAdapters\DataDbAdapter;
use Shopware\Components\SwagImportExport\Logger\Logger;
use WavExportExtension\Components\DbAdapters\DirectDbAdapter;class CustomDbAdapterSubscriber implements SubscriberInterface, Enlight_Hook
{ private $path; public function __construct($pluginPath)
{
$this->path = $pluginPath; } /\*\* \* @inheritDoc \*/ public static function getSubscribedEvents() { return ["Shopware\_Components\_SwagImportExport\_Factories\_DataFactory::createDataIO::replace" =\> "createDataIO"]; } public function createDataIO(\Enlight\_Event\_EventArgs $args) { throw new \Exception("hier"); }