[gelöst] Erweiterung der Backend Bestelldetailansicht

Hallo Zusammen, ich möchte im Backend die Detailansicht der Bestellungen anpassen und ihr einen neuen Tab hinzufügen. Ich habe mich auch schon hier schlau gemacht Erweiterung von Backend Modulen. Ich haben einen Eventlistener für ‘Enlight_Controller_Action_Init_Backend_Order’ angelegt, der folgendes Templateverzeichnis hinzufügt ‘Views/backend/order/view/detail/’. In diesem Verzeichnis ist die datei ‘window.js’ hinterlegt mit folgenden code. //{extends file="[default]backend/order/view/detail/window.js"} //{block name="backend/order/view/detail/window" append} //{namespace name=backend/order/main} Ext.define('Shopware.apps.Order.view.detail.Window-Meinplugin', { /\*\* \* Defines an override applied to a class. \* @string \*/ override: 'Shopware.apps.Order.view.detail.Window', /\*\* \* List of classes that have to be loaded before instantiating this class. \* @array \*/ requires: ['Shopware.apps.Order.view.detail.Window'], /\*\* \* Initializes the class override to provide additional functionality \* like a new full page preview. \* \* @public \* @return void \*/ initComponent: function() { var me = this; alert("function:initComponent"); me.callOverridden(arguments); }, createTabPanel:function () { var me = this; var tabpanel = me.callOverridden(arguments); alert("function:createTabPanel"); tabpanel[0].items.push( Ext.create('Shopware.apps.Order.view.detail.Meinplugin', { title: "{s name=window/Meinplugin}Meinplugin{/s}" }) ); return tabpanel; } }); //{/block} Rufe ich im Backend die Detailseite der Bestellungen auf, bekomme ich aber weiterhin die Standardansicht ohne irgendwelche Alerts. Das Templatedir wird richtig gesetzt laut FireBug. Ich denke bei der Vererbung hat sich ein Fehler eingeschlichen. Ich freue mich über jede Form von Hilfe und/oder Anregung. LG Stxe

Hi, so sollte es funktionieren: Boostrap.php: public function install() { $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Backend\_Order', 'loadBackendModule' ); ... return true; } public function loadBackendModule(Enlight\_Event\_EventArgs $arguments) { $arguments-\>getSubject()-\>View()-\>addTemplateDir( $this-\>Path() . 'Views/' ); //Hier lädst du alle Javascript Dateien die ein Override enthalten. if ($arguments-\>getRequest()-\>getActionName() === 'load') { $arguments-\>getSubject()-\>View()-\>extendsTemplate( 'backend/order/view/detail/my\_window.js' ); } //Hier erweiterst du die APP.JS um eigene Komponenten (Models, Views, Stores, Controllers) hinzuzufügen if ($arguments-\>getRequest()-\>getActionName() === 'index') { $arguments-\>getSubject()-\>View()-\>extendsTemplate( 'backend/order/my\_app.js' ); } } my\_app.js: (Beispiel um eigene Komponenten hinzuzufügen) //{block name="backend/order/application" append} //{include file="backend/order/controller/my\_plugin.js"} //{include file="backend/order/model/my\_plugin/my\_plugin.js"} //{include file="backend/order/store/my\_plugin/list.js"} //{include file="backend/order/view/my\_plugin/list.js"} //{/block} my\_window.js: (Hier wird der Override für das Fenster gemacht) //{block name="backend/order/view/detail/window" append} //\<==== Diese Zeile ist wichtig! //{namespace name=backend/order/view/main} Ext.define('Shopware.apps.Order.view.detail.MyWindow', { override: 'Shopware.apps.Order.view.detail.Window', //Überschreiben der standard funktion welche das Tab Panel erzeugt. createTabPanel: function () { var me = this; var tabPanel = me.callParent(arguments); tabPanel.add(DEINE KOMPONENTE HINZUFÜGEN) return tabPanel; } });

2 Likes

Hallo, Wie kann ich denn den Controller erweitern?? append nützt leider nix! [quote]//{block name=“backend/product_feed/controller/feed” append} Ext.define(‘Shopware.apps.MeinPlugin.controller.Feed’, { override: ‘Shopware.apps.ProductFeed.controller.Feed’, init:function () { var me = this; var test = me.callParent(arguments); alert(“testaaaaaa”); }); } //{/block} [/quote] Gruß Tom

Also hab immernoch folgendes problem: wenn ich den controller mit append erweiter : [quote]//{namespace name=backend/article/view/main} //{block name=„backend/article/controller/detail“ append} Ext.define(‚Shopware.apps.MeinPlugin.controller.Detail‘, { override:‚Shopware.apps.Article.controller.Detail‘,[/quote] Dann gehen die Originalfunktionen, meine selbstgeschriebenen aber nicht. mach ich das ganze ohne append, gehen meine aber die Originalen nicht mehr. Was muss man tun, damit beide gehen?!