Javascript Shopware 5,从自己的插件打开批处理窗口

Javascript Shopware 5,从自己的插件打开批处理窗口,javascript,plugins,ext4,shopware,Javascript,Plugins,Ext4,Shopware,我希望不要问得太苛刻,不要隐瞒事实 我们开始: 我在为Shopware 5开发自定义插件时遇到问题。 我已经有一个工作插件,其中列出了某些标准的订单。 现在我想在这个网格窗口的工具栏上有一个按钮(我已经有了) 该按钮应打开批处理窗口,该窗口已在shopware的本机“订单”窗口中可用 问:我如何使用所选的网格ID打开此应用程序 以下是我所拥有的: [...] createToolbarButton: function () { var me = this; ret

我希望不要问得太苛刻,不要隐瞒事实

我们开始:

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

该按钮应打开批处理窗口,该窗口已在shopware的本机“订单”窗口中可用

问:我如何使用所选的网格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({});
但现在的问题是,批处理的事件没有应用到表单上的按钮上。。。
我仍然在尝试出错。

许多Shopware ExtJS子应用程序可以从另一个应用程序中执行,并且使用某些参数,这与您尝试的方式完全相同。不幸的是,我在Order插件中没有看到任何可能导致期望结果的代码。通过阅读主控制器的
init
函数->
Shopware.apps.Order.controller.main,您可以看到Shopware子应用程序支持哪些操作/参数

例如,来自客户插件的
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插件中有类似的代码,但它只需要一个Order ID并打开相应订单的详细信息页面。它显然没有批处理窗口的功能

您可能能够以某种方式重用这个类,但这可能需要大量的代码来适应实际的Order插件。如果您真的需要这个功能,您可以仔细阅读Order插件是如何初始化窗口及其依赖项的,然后试一试

我更愿意在这个场景中开发一个轻量级模块(它是后端窗口中的一个框架,只在PHP/Smarty/HTML中使用控制器和模板视图)