Plugin: Einkaufswelt-Element mit eigener ExtJS Komponente

Hallo, ich versuche gerade per Plugin ein Einkaufswelt-Element mit eigener ExtJS Komponente zu erstellen, allerdings endet das ganze in einem Javascript-Error sobald man das Element bearbeiten will. Shopware 5.0.2 [code]Bootstrap.php<?php class Shopware_Plugins_Backend_BlogEmotionComponent_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{
const VERSION = ‚1.0.0‘;

public function getLabel()
{
    return 'Emotion-Element: Blogeinträge';
}

public function getVersion()
{
    return self::VERSION;
}

public function install()
{
    $this->createEmotionComponents(); return true; } private function createEmotionComponents() { $component = $this-\>createEmotionComponent(array( 'cls' =\> 'emotion-blog-integration', 'name' =\> 'Blog-Integration', 'template' =\> 'emotion-blog-integration', 'xtype' =\> 'emotion-blog-integration' )); // einige settings mit $component-\>createTextField() .. } } [/code] [code] Views/emotion\_components/backend/emotion\_blog\_integration.js Ext.define('Shopware.apps.Emotion.view.components.BlogIntegration', { extend: 'Shopware.apps.Emotion.View.components.Base', alias: 'widget.emotion-blog-integration', initComponent: function() { var me = this; me.callParent(arguments); } }); [/code] Nach der Installation habe ich alle Caches geleert und das Backend neu gestartet. In der Designer-Ansicht der Einkaufswelt taucht mein Element auf und ich kann es ins Grid ziehen. Sobald ich es bearbeiten will fliegt folgender Fehler (inkl. Stacktrace): [code] Uncaught TypeError: Cannot read property 'substring' of undefined Ext.ClassManager.parseNamespace @ ext-all-debug.js?201507160826:4493 Ext.ClassManager.get @ ext-all-debug.js?201507160826:4601 Ext.ClassManager.instantiate @ ext-all-debug.js?201507160826:4839 Ext.ClassManager.instantiateByAlias @ ext-all-debug.js?201507160826:4821 Ext.apply.widget @ ext-all-debug.js?201507160826:5098 Ext.define.create @ ext-all-debug.js?201507160826:44907 Ext.define.lookupComponent @ ext-all-debug.js?201507160826:75477 Ext.define.prepareItems @ ext-all-debug.js?201507160826:75449 Ext.define.add @ ext-all-debug.js?201507160826:75500 Ext.define.initItems @ ext-all-debug.js?201507160826:75344 Base.implement.callParent @ ext-all-debug.js?201507160826:3735 Ext.define.initItems @ ext-all-debug.js?201507160826:91915 Ext.define.initComponent @ ext-all-debug.js?201507160826:75328 Base.implement.callParent @ ext-all-debug.js?201507160826:3735 Ext.define.initComponent @ ext-all-debug.js?201507160826:91905 Base.implement.callParent @ ext-all-debug.js?201507160826:3735 Ext.define.initComponent @ ext-all-debug.js?201507160826:92206 Base.implement.callParent @ ext-all-debug.js?201507160826:3735 Ext.override.initComponent @ base?file=bootstrap&loggedIn=1448378636:1273 Base.implement.callParent @ ext-all-debug.js?201507160826:3735 Ext.define.initComponent @ ext-all-debug.js?201507160826:110583 Base.implement.callParent @ ext-all-debug.js?201507160826:3735 Ext.define.initComponent @ base?file=bootstrap&loggedIn=1448378636:1657 Base.implement.callParent @ ext-all-debug.js?201507160826:3735 Ext.define.initComponent @ /backend/Emotion/load/?f=m/Emotion|m/EmotionElement|m/Component|m/Field|m/Attribute|m/BannerSlider|…:2400 Ext.define.constructor @ ext-all-debug.js?201507160826:45265 Base.implement.callParent @ ext-all-debug.js?201507160826:3735 Ext.define.constructor @ ext-all-debug.js?201507160826:57622 constructor @ ext-all-debug.js?201507160826:4334 (anonymous function) @ VM16752:3 Ext.ClassManager.instantiate @ ext-all-debug.js?201507160826:4876 (anonymous function) @ ext-all-debug.js?201507160826:1840 Ext.apply.create @ ext-all-debug.js?201507160826:3311 Ext.define.onOpenSettingsWindow @ /backend/Emotion/load/?f=m/Emotion|m/EmotionElement|m/Component|m/Field|m/Attribute|m/BannerSlider|…:5141 Ext.util.Event.Ext.extend.fire @ ext-all-debug.js?201507160826:8638 Ext.override.dispatch @ base?file=bootstrap&loggedIn=1448378636:657 Ext.override.fireEvent @ ext-all-debug.js?201507160826:58383 Ext.define.onOpenSettingsWindow @ /backend/Emotion/load/?f=m/Emotion|m/EmotionElement|m/Component|m/Field|m/Attribute|m/BannerSlider|…:1774 me.getEl.on.click.fn @ /backend/Emotion/load/?f=m/Emotion|m/EmotionElement|m/Component|m/Field|m/Attribute|m/BannerSlider|…:1382 (anonymous function) @ VM17084:7 wrap @ ext-all-debug.js?201507160826:9260 [/code] Wie man sieht habe ich schon auf ext-all-debug.js umgestellt um dem Fehler auf die Schliche zu kommen. Der vierte Eintrag im Stacktrace zeigt, dass Ext versucht, die Komponente nach alias zu instantiieren: Ext.ClassManager.instantiateByAlias @ ext-all-debug.js?201507160826:4821 In der entsprechenden Map ist meine Komponente allerdings nicht gelistet, obwohl sie geladen wurde (verifiziert indem ich die Responses vom Shop beim Laden beobachtet habe, hier wird eine Datei geladen, die u.A. auch meine Komponente enthält) Hat das schon mal jemand gehabt oder kann mir einen Tip geben?

jou, die debug info von extjs ist ziemlich nutzlos, und die aussage “Uncaught TypeError: Cannot read property ‘substring’ of undefined” hilft überhaupt nicht weiter. aber nach trial-und-error habe ich herausgefunden das die extjs-ding dateiname darf nicht “-” erhalten… also probiere mal mit “emotion_blog_integration.js” und “‘template’ => ‘emotion_blog_integration’” ich hoffe deine nächste nuztlose extjs error wird nicht “unexpected token :” sein :stuck_out_tongue_winking_eye:

[quote=“wontfix”]ich hoffe deine nächste nuztlose extjs error wird nicht “unexpected token :” sein ;P[/quote] und wieder nach trial-und-error ist die lösung dafür: die erste zeile in der extjs-ding datei muss ne kommentar sein! (inhalt der kommentart ist wohl wurst…) :wtf:

(…)

Hallo, danke für deine Antwort. Leider hat das Ersetzen der „-“ durch „_“ nichts gebracht, ich bekomme immer noch den identischen Fehler.

Hallo, das Backend-Element muss diesen Datei-Namen haben: Views/emotion\_components/backend/blog\_integration.js Er leitet sich vom ExtJS-Element ab: Ext.define('Shopware.apps.Emotion.view.components.BlogIntegration', { Und ein paar fertige Bespiele findet man auch am Ende des Wiki-Artikels: http://community.shopware.com/_detail_1459.html Gruß Heiner

Danke für den Hinweis. Leider hat er auch nicht zum Erfolg geführt. Habe schon einen anderen Entwickler drüberschauen lassen weil ich langsam an meinem Versant zweifle, allerdings kann er den Fehler auch nicht ausmachen… Noch irgendwelche Tipps?