Ich habe die service.xml anhand der Shopware Doku erstellt.
Bin mir aber nicht ganz im klaren, was ich da eigentlich mache… Gibt es dazu irgendwie noch weitere Dokumentationen?
Was gebe ich bei id ein, was bei den arguments usw. ? phpStorm hat mir die class immerhin verknüpft, sodass ich der Meinung bin, dass dies stimmen sollte.
Oh, da hab ich noch gar nicht hineingeschaut, weil ich ich bei einem php-Fehler nicht davon ausgegangen bin, dass dort mehr drin stehen würde als in der Konsole.
Das muss ich nachreichen.
anbei die Fehlermeldung: Fatal error: Uncaught ReflectionException: Class prefixPluginName\Subscriber\TestSubscriber does not exist in /home/vagrant/www/sw-plugins/engine/Shopware/Components/DependencyInjection/Compiler/EventSubscriberCompilerPass.php on line 64
Verstehe ich die Service.xml dann irgendwie falsch? Woher kann ich wissen was für id, class, arguments und co eingetragen werden soll?! Da geht aus der Doku nicht hervor…
Dachte halt es stimmt so, da ein Klick in phpStorm auf die class prefixPluginName\Subscriber\TestSubscriber mich zu Subscriber/SubscriberDatei.php führt… und in der Doku und Plugins, die ich mir angesehen habe, ist es auch so…
die services.xml Datei wird für eine Symfony Komponente gebraucht, die wir in Shopware benutzen: den Service-Container. Daher würde ich zuerst dir die Symfony Doku empfehlen. http://symfony.com/doc/2.8/service_container.html (achte darauf, dass du die richtige Smyfony Version wählst 2.8 und außerdem die XML Beispiele)
Wenn du nun dir einen eigenen Service definierst, oder eben einen neuen Subscriber, kannst du dir die ID selber aussuchen. Bei class muss natürlich der Klassenname inkl. Namespace eingetragen werden. Der tag definiert in deinem Beispiel, dass es sich um einen Event-Subscriber handelt.
Arguments sind Abhängigkeiten deiner Klasse, die du im Konstruktur deines Services definierst.
Okay, ich komme eigentlich aus der Frontend-Welt (HTML, CSS, LESS, jQuery, Smarty und Co.) daher sind symphony, doctrine und co. komplettes Neuland für mich. Habe in der Regel damit auch sehr wenig Berührungspunkte - in diesem Fall eben schon.
Die ID habe ich mir auch frei ausgesucht. Die CLASS verweist aber (meiner Meinung nach) auf die korrekte Datei mit korrekter Klasse und korrektem Namespace. Sieht phpStorm doch auch so, oder würde er mich sonst auch in der service.xml mit Klick auf die Klasse auf die richtige Datei weisen? Woher dann der Fehler? Übersehe ich etwas?
'extendsFrontend',
];
}
public function extendsFrontend(\Enlight_Event_EventArgs $args)
{
echo '';
print_r("hallo");
echo '';
exit();
}
}
Funktioniert bei mir tadelos. An welcher Stelle genau, tritt denn dein Problem auf? Hast du den kompletten Cache einmal geleert, nach der Installation?
Ich kann meinen Fehler nicht finden. Letztlich habe ich alles neu gemacht. Im phpStorm hatte sich auch das Fileicon meines Subscribers nicht von dem php-Fileicon zum c-icon gewechselt. Irgendwas muss da nicht gepasst haben. Ich habe es einfach nochmal nachgebaut und bekomme jetzt keinen Fehler mehr.