ExtJS Model bei neuen Einkaufswelt-Elementen

Hallo liebe Entwickler,
ich hab mir eine neues Einkaufswelten Element erstellt (nagut, ich hab den Banner Slider kopiert und angepasst :P) und es läuft mittlerweile auch alles, aber ich gabe eine Frage bzgl. des Speicherorts der ExtJS Module welche Model bereitstellen.

An einer Stelle in der Komponente benutze ich folgenden Code um ein Model zu laden:

var model = Ext.create('Shopware.apps.Emotion.model.BeconSlider' [...]

insofern ich im Kopf meiner ExtJS Datei zusätzlich das Model definiere, funktioniert das auch gut. Ich packe dabei Komponente und Model in eine Datei:

Ext.define('Shopware.apps.Emotion.model.BeconSlider', {
    extend: 'Ext.data.Model',

    fields: [
        'position', 'path', 'mediaId', 'link', 'altText', 'title', 'subtitle'
    ]
});

Ext.define('Shopware.apps.Emotion.view.components.BeconSlider', { [...]

Diese Datei liegt in: 

/engine/Shopware/Plugins/Local/Frontend/Becon/Views/emotion_components/backend/becon_slider.js

Wenn ich jedoch versuche das Model auszulagern in eine extra Datei (wie der Banner-Slider das auch tut), z.b. in:

/engine/Shopware/Plugins/Local/Frontend/Becon/Views/emotion_components/backend/model/becon_slider.js
oder
/engine/Shopware/Plugins/Local/Frontend/Becon/Views/emotion_components/model/becon_slider.js

dann lädt er diese Datei nicht. Es folgt die Fehlermeldung:

Uncaught exception 'SmartyException' with message 'Unable to load template snippet 'backend/emotion/model/becon_slider.js'

Ich hab auch versucht diesen Pfad nachzubilden in meiner Dateistruktur, das funktioniert aber einfach nicht.  Wohin muss ich die Datei legen, damit sie gefunden wird?
Gibt es eine Dokumentation die ich übersehe? Sobald ich das Model von Shopware.apps.Emotion.[…] in Shopware.apps.BeconSlider.[…] ändere, gibts eine neue Fehlermeldung, welche nach einem Controller sucht, ihn aber nicht findet.

Ich hoffe das war halbwegs verständlich :slight_smile:

Gruß
Patrick 

Hallo Patrick,

bist Du des Rätsels Lösung auf die Schliche gekommen, oder hast Du es dabei belassen Alles in die eine JS Datei zu schreiben?

Grüße

Hallo portrino,
ich habs damals wohl hinbekommen, zumindest sehe ich meinen aktuellen Code als gesplittet. 

Ich bin mir nicht mehr 100% sicher woran es lag, aber ich glaube die JS Dateien brauchen Smarty-Blöcke als Kommentare um vom Template System erkannt zu werden. 

D.h. ich hab jetzt eine Datei in:
/engine/Shopware/Plugins/Local/Frontend/Becon/Views/emotion_components/backend/becon_slider.js

Um den eigentlichen Code herum ist ein Code gespannt. 

Oben:

//{block name="backend/emotion/view/components/becon_slider"}
//{namespace name=backend/emotion/view/components/becon_slider}

Unten:

//{/block}

Dabei sind diese auch wirklich mit // als Kommentar hinterlegt, damit der JS Interpreter diese Zeilen ignoriert, Smarty bekommt es aber trotzdem hin.

Auf der gleichen Eben, unter:

/engine/Shopware/Plugins/Local/Frontend/Becon/Views/emotion_components/backend/becon_slider.model.js

liegt jetzt das Model, auch umfasst mit: 

//{block name="backend/emotion/view/components/becon_slider/model"}
//{namespace name=backend/emotion/view/components/becon_slider}

und

//{/block}

Ich hoffe das hilft dir, sonst frag einfach nochmal und ich versuche nachzustellen was ich damals gemacht habe.

Gruß
Patrick