Shopware 5,从Own Plugin打开BatchProcess窗口

时间:2017-01-31 15:59:54

标签: javascript plugins ext4 shopware

我希望不要苛刻地要求不要解决问题。

我们走了:

我在为Shopware 5开发自定义插件时遇到问题。 我已经有一个工作插件,列出了某些条件的订单。 现在我想要一个按钮(我已经拥有)在这个网格窗口的工具栏中。

按钮应打开批处理窗口,该窗口已在商品的本地“订单”窗口中可用。

问:如何使用选定的网格ID打开此应用程序?

继承我所拥有的:

[...]
createToolbarButton: function () {
        var me = this;
        return Ext.create('Ext.button.Button', {
            text: 'Batch Processing Orders',
            name: 'customBatchProcessButton',
            cls: 'secondary',
            handler: function () {
                me.onClickCustomBatchProcessButton(me);
            }
        });
    },
onClickCustomBatchProcessButton: function(me){
        var thisGrid = me.getTransferGrid();
        var records = thisGrid.getSelectionModel().getSelection();
        console.log("Grid");
        console.log(thisGrid);
        console.log("records");
        console.log(records);
        Shopware.app.Application.addSubApplication({
             name: 'Shopware.apps.Order',
             action: 'batch',
             params: {
                 mode: 'multi',
                 records: records
             }
         });
    }
[...]

它始终打开订单窗口的常规视图。 (控制台没有错误) 有人有建议吗? 那太好了! 谢谢你的时间:))

问候

编辑: 嘿,谢谢你到目前为止的答复。 我设法像这样打开批处理窗口:

me.getView('Shopware.apps.Order.view.batch.Window').create({
                 orderStatusStore: Ext.create('Shopware.apps.Base.store.OrderStatus').load(),
                 records: orderRecords,
                 mode: 'multi'
             }).show({});

但现在问题是,批处理的事件未应用于表单上的按钮... 我仍在尝试和错误。

1 个答案:

答案 0 :(得分:1)

许多Shopware ExtJS子应用程序可以使用某些参数从另一个应用程序执行,完全按照您尝试的方式执行。不幸的是,我没有在订单插件中看到任何可能导致所需结果的代码。您可以通过阅读主控制器的init功能 - >来查看Shopware SubApplication支持的操作/参数。 Shopware.apps.Order.controller.Main

来自Customer插件的

Shopware.apps.Customer.controller.Main例如接受您正在使用它的操作 - 它正在检查:

if (me.subApplication.action && me.subApplication.action.toLowerCase() === 'detail') {
    if (me.subApplication.params && me.subApplication.params.customerId) {
        //open the customer detail page with the passed customer id
...

在Order插件中有类似的代码,但它只需要一个订单ID并打开相应订单的详细信息页面。它显然没有batch.Window

的特征

您可能能够以某种方式重用此类,但这可能是您需要从实际的Order插件中调整的大量代码。如果你真的需要这个功能,你可以仔细阅读Order插件如何初始化窗口及其依赖关系,并尝试一下。

我宁愿在这种情况下开发一个轻量级模块(它是后端窗口中的一个框架,只使用带有PHP / Smarty / HTML的控制器和模板视图)