Guten Tag, da unter shopware 3.5. das MVC-System greift und somit die Daten der Artikel-Detailansicht im Controller “Shopware_Controllers_Frontend_Detail” geladen werden, möchte ich die enthaltene index-Action gerne um das Laden weiterer Daten erweitern/überschreiben. Die geladenen Daten möchte ich dann auf der Artikel-Detailseite verwenden. Leider konnte ich in der Doku nirgendwo einen Hinweis finden, wie bestehende Actions eines Controllers überschrieben werden können. Kann mir hier jemand eine Anleitung oder Link mitteilen? Vielen Dank vorweg, Rafael Kutscha
Ich vermute mal, dass es über ein Plugin gelöst werden muss. Ich versuche mal ein entsprechendes zu erstellen - falls jemand bereits die Artikel-Detailansicht per Plugin oder durch Überschreiben des Detail-Controllers angepasst hat, freue ich mich über entsprechende Tipps. Danke!
schau mal: public function install() { $event = $this-\>createEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Detail', 'onPostDispatchFrontendDetail' ); $this-\>subscribeEvent($event); return true; } public static function onPostDispatchFrontendDetail(Enlight\_Event\_EventArgs $args) { $request = $args-\>getSubject()-\>Request(); $response = $args-\>getSubject()-\>Response(); $view = $args-\>getSubject()-\>View(); //Dein Code }
Vielen Dank!! Zwischenzeitlich war ich bereits hier angekommen: class Shopware\_Plugins\_Frontend\_Article\_Bootstrap extends Shopware\_Components\_Plugin\_Bootstrap { /\*\* \* this derived method is called automatically each time the plugin will be installed \* @return bool \*/ public function install() { $event = $this-\>createEvent('Enlight\_Controller\_Action\_Frontend\_Detail\_Index', 'onDetail'); $this-\>subscribeEvent($event); return true; } /\*\* \* called after of the sSaveOrder function \* @static \* @param Enlight\_Hook\_HookArgs $args \* @return void \*/ static function onDetail(Enlight\_Hook\_HookArgs $args) { die("Detailansicht!"); ...
Grundsätzlich elegante Lösung - nun kann ich mich der eigentlichen Erweiterung widmen!