Shopware 5, откройте окно BatchProcess из собственного плагина
Я надеюсь, что это не должно быть резким, чтобы попросить не смягчать дела.
Вот так:
У меня проблема с разработкой пользовательского плагина для Shopware 5. У меня уже есть работающий плагин, в котором перечислены заказы по определенным критериям. Теперь я хочу кнопку (которая у меня уже есть) на панели инструментов этого окна сетки.
Кнопка должна открыть окно "Пакетная обработка", которое уже доступно в собственном окне "Заказ" магазина.
В: Как я могу открыть это приложение с выбранными идентификаторами моей сетки?
Вот что у меня есть:
[...]
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
}
});
}
[...]
Он всегда открывает обычный вид окна заказа. (нет ошибки в консоли) У кого-нибудь есть предложения? Это было бы прекрасно! Спасибо за ваше время:)
Привет
РЕДАКТИРОВАТЬ: Эй, спасибо за ваш ответ до сих пор. Мне удалось открыть окно Batch-process следующим образом:
me.getView('Shopware.apps.Order.view.batch.Window').create({
orderStatusStore: Ext.create('Shopware.apps.Base.store.OrderStatus').load(),
records: orderRecords,
mode: 'multi'
}).show({});
Но теперь проблема заключается в том, что событие для пакетного процесса не применяется к кнопке в форме... Я все еще на пробу и ошибку.
1 ответ
Многие SubApplications Shopware ExtJS могут быть выполнены из другого приложения с определенными параметрами именно так, как вы пытаетесь. К сожалению, я не вижу кода в плагине Order, который мог бы привести к желаемому результату. Вы можете увидеть, какие действия / параметры поддерживает SubApplication Shopware, прочитав init
функция главного контроллера -> Shopware.apps.Order.controller.Main
Shopware.apps.Customer.controller.Main
Например, плагин Customer принимает действие, которое вы используете, - он проверяет это:
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 есть аналогичный код, но он просто берет идентификатор заказа и открывает страницу сведений о соответствующем заказе. Это, очевидно, не имеет batch.Window
Возможно, вы сможете как-то повторно использовать этот класс, но это может быть тонна кода, который вам нужно адаптировать из фактического плагина Order. Если вам действительно нужна эта функция, вы можете внимательно прочитать, как плагин Order инициализирует окно и его зависимости, и попробовать.
Я предпочел бы пойти на разработку облегченного модуля в этом сценарии (это фрейм в бэкэнд-окне, который просто использует контроллеры и представления шаблонов с PHP/Smarty/HTML)