Правильный способ создания бутонов в многокомпонентной форме в 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>
Если нет другого способа сделать сохраняемую форму компонентом пользовательского интерфейса, то что точка их частичного существования?
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
];
}
Более подробный пример можно найти здесь