我希望不要苛刻地要求不要解决问题。
我们走了:
我在为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({});
但现在问题是,批处理的事件未应用于表单上的按钮... 我仍在尝试和错误。
答案 0 :(得分:1)
许多Shopware ExtJS子应用程序可以使用某些参数从另一个应用程序执行,完全按照您尝试的方式执行。不幸的是,我没有在订单插件中看到任何可能导致所需结果的代码。您可以通过阅读主控制器的init
功能 - >来查看Shopware SubApplication支持的操作/参数。 Shopware.apps.Order.controller.Main
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的控制器和模板视图)