Extend / Override von ExtJs ohne vorhandene Smarty Blöcke

Guten Tag,

nach längerer Zeit auf der Suche nach einer Lösung und ausprobieren, versuche ich mein Glück hier.

Mein Ziel ist es eine Backend Componente durch das Erweitern / Überschreiben von ExtJs View / Model Elementen zu verändern. 

Bei allen Dateien, die Smarty-Blöcke beinhalten klappt dies auch problemlos. Bei allen Dateien ohne Smarty-Blöcke komme ich mit einer Event Subscribtion und dem “View->extendsTemplate” nicht weiter. Weder ein “override: …” , noch ein “extends: …” der ExtJs funktioniert. Es entsteht keine Fehlermeldung und das Backend wird normal geladen, allerdings ohne die Änderung. Nutzt man ein “View->loadTemplate” wird nur das eigene, aber nicht die Standard-Templates geladen und das Backend Menu kann nicht mehr geladen werden.

Bespielhafte Dateien die keine Smarty Blöcke beinhalten, die ich aber gerne verändern würde: 

View:     Shopware.apps.Attributes.view.Listing

Model:   Shopware.apps.Attributes.model.Table

 

Ich wäre über Informationen dies bezüglich und / oder Lösungsvorschläge sehr dankbar.

Mit freundlichen Grüßen

Hallo,

registriere Dich hierzu auf folgendes Event:

 'Enlight\_Controller\_Action\_PostDispatch\_Backend\_Index'

und erweitere die backend/index/header.tpl

 

public function onPostDispatchIndex(\Enlight_Event_EventArgs $args)
{
    $args->getSubject()->View()->addTemplateDir( __DIR__.'/../Resources/Views/');
    $args->getSubject()->View()->extendsTemplate('backend/index/my_plugin/header.tpl');
}

 

In der header.tpl kannst Du dann die overrides machen:

{extends file='parent:backend/index/header.tpl'}

{block name="backend/base/header/javascript" append}
    
            Ext.define('Shopware.apps.Attributes.view.MyListing', {
                override: 'Shopware.apps.Attributes.view.Listing',

                createTableComboBox: function() {
                    var me = this;
                    var combobox = me.callParent(arguments);
                    console.log('i bims, der listing owäreit!!!');
                    return combobox;
                }
            });
            Ext.define('Shopware.apps.Attributes.model.MyTable', {
                override: 'Shopware.apps.Attributes.model.Table',

                getLabel: function(value, record) {
                        return 'Mein Label';
                }
            });
    
{/block}

 

1 Like