Magento 2 добавить всплывающее окно подтверждения к кнопке сохранения - PullRequest
0 голосов
/ 09 марта 2020

Я использую Magento Open Source 2.3.x, у меня есть пользовательская форма. Что мне нужно сделать, это добавить всплывающее окно подтверждения для кнопки сохранения. Я мог бы добавить такое всплывающее окно для кнопки Delete, но не для кнопки Save. Любая помощь высоко ценится. Вот мой компонент пользовательского интерфейса. xml file.

    <form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
        <argument name="data" xsi:type="array">
            <item name="js_config" xsi:type="array">
                <item name="provider" xsi:type="string">ven_customers_storecredit_topup_form.topup_form_data_source</item>
            </item>
            <item name="label" translate="true" xsi:type="string">General Information</item>
            <item name="template" xsi:type="string">templates/form/collapsible</item>
        </argument>
        <settings>
            <buttons>
                <button class="Vendor\Module\Block\Adminhtml\Topup\Edit\BackButton" name="back"/>
                <button class="Vendor\Module\Block\Adminhtml\Topup\Edit\SaveButton" name="save"/>
            </buttons>
            <namespace>ven_customers_storecredit_topup_form</namespace>
            <dataScope>data</dataScope>
            <deps>
                <dep>ven_customers_storecredit_topup_form.topup_form_data_source</dep>
            </deps>
        </settings>
        <dataSource name="topup_form_data_source">
            <argument name="data" xsi:type="array">
                <item name="js_config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/form/provider</item>
                </item>
            </argument>
            <settings>
                <submitUrl path="*/*/save"/>
            </settings>
            <dataProvider class="Vendor\Module\Model\Customer\DataProvider" name="topup_form_data_source">
                <settings>
                    <requestFieldName>id</requestFieldName>
                    <primaryFieldName>entity_id</primaryFieldName>
                </settings>
            </dataProvider>
        </dataSource>
        <fieldset name="general">
            <settings>
                <label>General</label>
            </settings>
            <field name="topup" sortOrder="80" formElement="select">
                <settings>
                    <dataType>text</dataType>
                    <label translate="true">Amount</label>
                    <dataScope>topup</dataScope>
                </settings>
                <formElements>
                    <select>
                        <settings>
                            <options class="Vendor\Module\Model\Source\PriceOptions"/>
                        </settings>
                    </select>
                </formElements>
            </field>
        </fieldset>
    </form>

Вот класс кнопки

    <?php

    namespace Vendor\Module\Block\Adminhtml\Topup\Edit;

    use Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface;

    class SaveButton extends GenericButton implements ButtonProviderInterface
    {
        public function getButtonData()
        {
            return [
                'label' => __('Save'),
                'class' => 'save primary',
                'data_attribute' => [
                    'mage-init' => ['button' => ['event' => 'save']],
                    'form-role' => 'save',
                ],
                'sort_order' => 90,
            ];
        }
    }

1 Ответ

0 голосов
/ 12 марта 2020

Попробуйте это:

namespace Vendor\Module\Block\Adminhtml\Topup\Edit;

use Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface;

class SaveButton extends GenericButton implements ButtonProviderInterface
{
    public function getButtonData()
    {
       $message = __('Save it!');
        return [
            'label' => __('Save'),
            'class' => 'save primary',
            'onclick' => "confirmSetLocation('{$message}', '{$this->getUrl(action)}')",
            'sort_order' => 90,
        ];
    }
}

Goodluck!

...