Правильный способ создания бутонов в многокомпонентной форме в Magento 2


Я создал форму UIComponent, но кнопки сохранения нет. В каждом сопонентном примере формы нет кнопок сохранения, и все примеры с кнопкой сохранения, которые я нашел, ПОЛНОСТЬЮ созданы в Magento 1 способом (я имею в виду, что все они сгенерированы блоком php).

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

    <item name="buttons" xsi:type="array">
        <item name="save" xsi:type="array">
            <item name="name" xsi:type="string">save</item>
            <item name="label" xsi:type="string" translate="true">Save</item>
            <item name="class" xsi:type="string">primary</item>
        </item>
    </item>

Если нет другого способа сделать сохраняемую форму компонентом пользовательского интерфейса, то что точка их частичного существования?

Author: Luke, 2016-09-08

1 answers

Вы можете объявить кнопки внутри

<argument name="data" xsi:type="array"> помечайте как это

    <item name="buttons" xsi:type="array">
        <item name="back" xsi:type="string">[Namespace]\[Module]\Block\Adminhtml\Button\Back</item>
        <item name="delete" xsi:type="string">[Namespace]\[Module]\Block\Adminhtml\Button\Delete</item>
        <item name="save" xsi:type="string">[Namespace]\[Module]\Block\Adminhtml\Button\Save</item>
    </item>

У вас могут быть дополнительные кнопки. Столько, сколько ты захочешь.
Каждый класс, объявленный внутри тега "item", должен реализовывать интерфейс Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface.
в методе getButtonData вы определяете, как кнопка выглядит или ведет себя

Например, для кнопки "Назад" это может выглядеть так:

public function getButtonData()
{
    return [
        'label' => __('Back'),
        'on_click' => sprintf("location.href = '%s';", $this->getBackUrl()),
        'class' => 'back',
        'sort_order' => 10
    ];
}

Более подробный пример можно найти здесь

 5
Author: Marius, 2016-09-08 13:27:47