Einkaufswelten Component Handler wird scheinbar nicht verwendet.

Hallo,

Ich habe ein eigenes Einkaufsweltenelement geschrieben, welches zum großteil auf den Banner Slider basiert.
inzwischen lässt sich dieses Element im Backend konfigurieren und dort auch in der Vorschau darstellen.
Nachdem ich das Element nun integriert und konfiguriert hatte, wollte ich dieses im Frontend darstellen.

Dafür benötigte ich lediglich noch den ComponentHandler. Dieser unterscheidet sich ebenfalls kaum vom BannerSliderComponenthandler und leitet ebenfalls vom AbstractComponenthandler ab. So ähnlich wie das Beispiel in der Dokumentation: https://developers.shopware.com/developers-guide/custom-shopping-world-elements/

In der services.xml hatte ich nun folgenden Eintrag hinzugefügt:

Um zu prüfen, dass alles korrekt verarbeitet wird, habe ich mit xDebug ein paar Breakpoints in meinen Handler integriert.
Leider wird aber keiner der Breakpoints aktiviert nichtmal in der “supports”-Funktion des ComponentHandlers.

Cache etc. wurde natürlich alles nach der Installation meines Plugins gelöscht. Und auch das Theme hatte ich erneut kompiliert. 

Habe ich irgendetwas übersehen? Oder fehlt mir noch irgendetwas?

Benutzst du das selbe Template / xtype vom Banner?

Nein ich habe der Komponente einen eigenen xtype gegeben.

Hier der Code in meinem EmotionElementInstaller:

$bannerSliderButtonElement = $this->emotionComponentInstaller->createOrUpdate(
    $this->pluginName,
    'WDYBannerSliderButton',
    [
        'name' => 'Banner Slider Button',
        'xtype' => 'emotion-components-banner-slider-button',
        'template' => 'component_banner_slider_button',
        'cls' => 'banner-slider-button-element',
        'description' => 'Some description'
    ]
);

Im Backend ist mein Element auch verfügbar und Einstellungen kann ich auch vornehmen, nur die Verarbeitung für das Frontend-Template funktioniert nicht. Er lädt zwar mein eigenes Template, setzt aber nicht den Smarty Parameter „Data“ mit den vorgesehenen Werten.

Die Implementierung meines Handlers is auch nahezu identisch zum BannerSlider nur folgende Konstante habe ich angepasst.

const COMPONENT_TYPE = 'emotion-components-banner-slider-button';

 

Ich habe auch bereits mit xDebug versucht meinen Handler zu debuggen. Dieser wird aber gar nicht aufgerufen. Nichtmal die __construct Methode vom AbstractComponentHandler wird aufgerufen. Und natürlich auch nicht die supports oder import/export Methode.

Ich weiß nun wirklich nicht mehr was ich da überhaupt noch versuchen sollte. Mir sind aber noch zwei kleinigkeiten Aufgefallen.

  1. PHPStorm gibt mir den Hinweis bei der Zeile:

den Hinweis: „Inspect Instance of: Shopware/Components/DependencyInjection/Container“

  1. Im CoreLogger erhalte ich folgende Nachricht:

core.DEBUG: Shopware\Bundle\EmotionBundle\ComponentHandler\EventComponentHandler is deprecated since 5.3 and will be removed with 6.0. Implement a ComponentHandler instead for performance benefit. {„uid“:„45b7341“}

Soweit ich weiß verwende ich aber nicht den EventComponentHandler. Zwar hatte ich mal eine Implementierung des Shopware\Bundle\EmotionBundle\ComponentHandler\ComponentHandlerInterface implementiert in der Hoffnung es ändert sich etwas, diese habe ich nun aber wieder aus der services.xml entfernt, nachdem ich gelesen hatte, dass man den anderen ComponentHandler verwenden solle.

Hier sonst nochmal meine ganze services.xml:

            %w_d_y_emotions.plugin_dir%
            
        

        
            
            
            

            
        

        
        
            %w_d_y_emotions.plugin_dir%
            
        

        
            
            %w_d_y_emotions.plugin_dir%
        

        
            
            %w_d_y_emotions.plugin_dir%

 

Gibt es sonst andere Fehlerquellen die dies verursachen können?

Soll ich noch zusätzliche Informationen Integrieren?

Oder hat noch nie jemand ein eigenes Einkaufswelten Element mit eigenem ComponentHandler gemacht? :smiley:

Ich schieb das Thema nochmal hoch… 

Hat noch keiner einen ComponentHandler gemacht? Oder liegt da ein Bug vor?

Hi, du versuchst da glaube ich im service den part für den export einzufügen. Wenn du dich ans Beispiel aus der Docu hälst, ist eher das hier, was du brauchst: