Пользовательская кнопка сохранения администратора Magento 2 отправляет запрос дважды

#magento2

#magento2

Вопрос:

По сути, я хочу отправить «сохранить» в качестве параметра при сохранении формы. Для этого я настроил кнопку сохранения и добавил туда store_id, но теперь метод сохранения вызывается дважды. Есть идеи, почему это происходит и как я могу это исправить?

Это кнопка: (VendorModuleBlockAdminhtmlEntityEditSaveButton.php )

 public function getButtonData()
{
    return [
        'label' => __('Save'),
        'class' => 'save primary',
        'data_attribute' => [
            'mage-init' => [
                'buttonAdapter' => [
                    'actions' => [
                        [
                            'targetName' => 'vendor_module_entity_form.vendor_module_entity_form',
                            'actionName' => 'save',
                            'params' => [
                                true,
                                ['store' => 5]
                            ]
                        ]
                    ]
                ]
            ]
        ],
        'sort_order' => 90,
    ];
}
 

и это ui_component (vendor_entity_entity_form.xml ):

 ......
<settings>
    <buttons>
        <button class="VendorModuleBlockAdminhtmlEntityEditSaveButton" name="save"/>
    </buttons>
</settings>
<dataSource name="entiity_form_data_source">
    <settings>
        <submitUrl path="*/*/save"/>
        <validateUrl path="*/*/validate"/>
    </settings>
</dataSource>
......
 

Ответ №1:

Пожалуйста, попробуйте:

 public function getButtonData(): array
{
    return [
        'label' => __('Save'),
        'class' => 'save primary',
        'data_attribute' => [
            'mage-init' => ['button' => ['event' => 'save']],
            'form-role' => 'save',
        ],
        'sort_order' => 10
    ];
}
 

Ответ №2:

пожалуйста, попробуйте приведенный ниже код.

 $this->buttonList->add(
            'select_all',
            [
                'label' => __('Select All Rates and Save'),
                'class' => 'save',
                'onclick' => "jQuery('#testhidden').val(1)",
                'data_attribute' => [
                    'mage-init' => ['button' => ['event' => 'save', 'target' => '#edit_form']],

                ]
            ],
            10
        );
 

Создайте скрытое поле в form.php где определены поля

 $fieldset->addField(
                'testhidden',
                'hidden',
                ['name' => 'testhidden', 'value' => 0, 'no_span' => true]
            );