Вкладка новой статьи в бэкэнд-магазине, ключ отправлен, значение не

1

У меня есть задача создать простой плагин для магазина, чтобы расширить статью с помощью новой вкладки и нескольких полей в ней. Я сделал это как-то, код ниже, но у меня есть большая проблема:

после ввода данных для статьи при нажатии на кнопку "Сохранить" действие запускается, вызывается ajax-вызов, в разделе "Сети" в браузере я могу видеть ключ полей, но нет значения.

Запросить параметры выглядят так: name: bla bla myfield: <--- категория проблем: какая-то категория и т.д.

Все хорошо работало, когда поля были в оригинальных вкладках.

app.js:

    // {block name="backend/article/application"}
//  {$smarty.block.parent}
//  {include file="backend/article/controller/controller.js"}
// {/block}

модель:

// {block name="backend/article/model/article/fields"}
//{$smarty.block.parent}
    { name: 'madeby', type: 'string' },
    { name: 'columna', type: 'string' },
    { name: 'colona', type: 'string' },
    { name: 'blabla', type: 'string' },
// {/block}

и основная часть window.js:

// {block name="backend/article/view/detail/window"}
// {$smarty.block.parent}
// {namespace name="backend/etsy_attribute/window"}

Ext.define('Shopware.apps.Article.view.detail.Window.etsy_connector.Window', {

    override: 'Shopware.apps.Article.view.detail.Window',

    /**
     * Override creatMainTabPanel method and add your custom tab here.
     * To extend the tab panel this function can be override.
     *
     * @return Ext.tab.Panel
     */
    createMainTabPanel: function () {
        var me = this, result;
        result = me.callParent(arguments);

        me.registerAdditionalTab({
            title: 'Etsy Tab',
            tabConfig: { disabled: false },
            contentFn: function (article, stores, eOpts) {
                eOpts.tab.add({
                    tab:
                        me.etsyTab = Ext.create('Ext.container.Container', {
                        region: 'center',
                        padding: 10,
                        title: 'Etsy Tab',
                        disabled: false,
                        name: 'additional-tab',
                        //cls: Ext.baseCSSPrefix + 'etsy-tab-container',
                        items: [
                            me.createEtsyPanel()
                        ]
                    }),
                    xtype:
                        me.etsyTab,
                    config:
                        me.etsyTab
                });

            },
            scope: me
        });

        //result.add(me.etsyTab);

        return result;
    },

    createEtsyPanel: function () {
        var me = this;

        me.etsyFormPanel = Ext.create('Ext.form.Panel', {
            name: 'etsy-panel',
            bodyPadding: 10,
            autoScroll: true,
            defaults: {
                labelWidth: 155
            },
            items: [
                me.createEtsyFieldSet()
            ]
        });

        return me.detailContainer = Ext.create('Ext.container.Container', {
            layout: 'fit',
            name: 'main',
            title: me.snippets.formTab,
            items: [
                me.etsyFormPanel
            ]
        });
    },

    createEtsyFieldSet: function () {
        //var me = this;

        return Ext.create('Ext.form.FieldSet', {
            layout: 'anchor',
            cls: Ext.baseCSSPrefix + 'article-etsy-field-set',
            defaults: {
                labelWidth: 155,
                anchor: '100%',
                translatable: true,
                xtype: 'textfield'
            },
            title: 'Etsy connection content',
            items: [
                {
                    xtype: 'textfield',
                    name: 'blabla',
                    height: 100,
                    fieldLabel: 'blabla'
                },
                {
                    xtype: 'textfield',
                    name: 'columna',
                    height: 100,
                    fieldLabel: 'columna'
                },
                {
                    xtype: 'textfield',
                    name: 'colona',
                    height: 100,
                    fieldLabel: 'colona'
                },
                {
                    xtype: 'textfield',
                    name: 'madeby',
                    height: 100,
                    fieldLabel: 'madeby'
                }
            ]
        });
    }
});
// {/block}

Мой вопрос:

Почему никакая ценность не отправляется в запросе для моих добавленных полей на новой вкладке?

Благодарю.

  • 0
    Любое направление или предложение будет оценено! Я застрял два дня об этом.
Теги:
extjs
shopware

1 ответ

0
Лучший ответ

Вам также нужно добавить контроллер для обработки вашей вкладки.

//{block name="backend/article/controller/detail" append}
Ext.define('Shopware.apps.Article.controller.detail.etsy_connector.Base', {
   override: 'Shopware.apps.Article.controller.Detail',

   onSaveArticle: function(win, article, options) {
       var me = this;

       me.callParent([win, article, options]);

       console.log(me);
       console.log(me.getMainWindow());

       //You need to find your own form
       console.log(me.getMainWindow().detailContainer);
       console.log(me.getMainWindow().detailContainer.getForm().getValues());
       var myVariables = me.getMainWindow().detailContainer.getForm().getValues();

       //Or merge your data with article data
       var params = Ext.merge({}, me.getMainWindow().detailForm.getForm().getValues(), myVariables);

       //Send to your own controller to handle
       Ext.Ajax.request({
           method: 'POST',
           url: '{url controller=EtsyConnector action=save}',
           params: myVariables
       });
    }
});
//{/block}
  • 0
    Спасибо друг. Это действительно сработало!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню