Erweiterung der Liste von Bestellungen im Backend läd nicht.

Hi,

ich versuche die Liste von Bestellungen im Backend zu erweitern. (Shopware 5.1.6+) Leider wird weder mit

 override: 'Shopware.apps.LDSOrderListExtension.view.order.list.List',

noch mit

 extend: 'Ext.grid.Panel',

die Erweiterung sichtbar. Hier ist der Code: LDSOrderListExtension.php

namespace LDSOrderListExtention;

use \Shopware\Components\Plugin;

class LDSOrderListExtention extends Plugin
{
    public static function getSubscribedEvents()
    {
        return [
            'Enlight_Controller_Action_PostDispatchSecure_Backend_Customer' => 'onPostDispatchCustomer'
        ];
    }

    public function onPostDispatchCustomer(\Enlight_Event_EventArgs $args)
    {
        $controller = $args->getSubject();
        $request = $controller->Request();
        $view = $controller->View();

        $view->addTemplateDir( __DIR__.'/Resources/Views/');

        $assignedData = $view->getAssign('data');
        foreach($assignedData as $key => $order) {
            $list = Shopware()->Db()->fetchAll('
              SELECT `articleordernumber` FROM `s_order_details` WHERE `orderID` = ?),"")', array ($order["id"]));
            foreach($list as $item){
                $assignedData[$key]["lds_articleNr"] += $item.", ";
            }
        }
        $view->data = $assignedData;

        if ($request->getActionName() == 'getList') {
            $view->extendsTemplate('backend/LDS_OrderExtension/view/list/list.js');
        }
    }

Resources/Views/backend/LDS_OrderExtension/view/list/list.js

//{block name="backend/order/view/list/list"}
// {$smarty.block.parent}
Ext.define('Shopware.apps.LDSOrderListExtension.view.order.list.List', {
    extend: 'Ext.grid.Panel',

    getColumns:function () {
        var me = this;
        var columns = me.callOverridden(arguments);

        console.log('Erweiterung geladen.');

        var column_attribute_name = {
            header: 'Artikelnummer',
            dataIndex: 'lds_articleNr',
            flex: 1,
            sortable: true,
        };
        return Ext.Array.insert(columns, 1, [column_attribute_name]);
    }

});

//{/block}

Fehlt da noch etwas oder wo liegt mein Fehler? (Weder die Konsole, noch die PHP Errors zeigen einen Fehler an)

Hallo,

 

sieht soweit ganz gut aus. Allerdings solltest du beachten, dass die neue Plugin Struktur, die du nutzt, erst ab Shopware 5.2 und höher geht. Das geht also so nicht in Shopware 5.1.

 

 

MFG

 

derwunner

und warum funktioniert es nicht? (ist für einen 5.3.+ Shop also neues Plugin System)

Kommt denn ein Fehler oder sonst irgendwas? Nähere Debug Infos würde man schon brauchen

Keine Fehlermeldungen, weder in Shopware, noch in der Konsole oder dem Apache error logs.

Kann mir hier keiner helfen?

Hab die Lösung gefunden. Die Erweiterung der Backendmodule mit {$smarty.block.parent} , bzw. bei diesem ist es so, funktioniert nicht!

Hier muss ein append gesetzt werden, da Shopware sonst immer für die gennante Zeile einen Fehler wirft. Hier der komplette Code:

//{block name="backend/order/view/list/list" append}

Ext.define('Shopware.apps.Order.pluginname.view.list.List', {
    override: "Shopware.apps.Order.view.list.List",

    getColumns:function () {

        var me = this;

        var columns = me.callParent(arguments);

        var counter = 0;

        var newcolumns = new Array();

        columns.forEach(function (element) {
            if (counter == 3){
                newcolumns.push ({
                    header: 'Artikelnummer',
                    renderer: me.getArticleID,
                    flex: 1
                });

                newcolumns.push ({
                    header: 'Bestand',
                    renderer: me.getinStock,
                    flex: 1
                });
            }
            newcolumns.push(element);
            counter++;
        });
        return newcolumns;
    }
});
//{/block}

Die JS Datei muss natürlich auch geladen werden. -> app.js

//{block name="backend/order/application"}
//{$smarty.block.parent}

//{include file="backend/order/lds_order_list_extension/view/list/list.js"}

//{/block}

 

Die Übergabe in der Bootstrap:

namespace Pluginname;

use \Shopware\Components\Plugin;

class Pluginname extends Plugin
{
    public static function getSubscribedEvents()
    {
        return [
            'Enlight_Controller_Action_PostDispatchSecure_Backend_Order' => 'onPostDispatchOrder'
        ];
    }

    public function onPostDispatchOrder(\Enlight_Event_EventArgs $args)
    {
        /** @var \Enlight_Controller_Request_Request $request */
        $request = $args->getSubject()->Request();

        /** @var \Enlight_View_Default $view */
        $view = $args->getSubject()->View();

        // register templates
        $view->addTemplateDir($this->getPath().'/Resources/Views');

        if ($request->getActionName() == 'load') {
            $view->extendsTemplate('backend/order/pluginname/view/list/list.js');
        }

        if ($request->getActionName() == 'index') {
            $view->extendsTemplate('backend/order/pluginname/app.js');
        }
    }

}//class