Para criar um formulário de back-end via ui_component, defino o seguinte no arquivo de configuração para exibir os botões save and saveAndContinue Button
<item name="buttons" xsi:type="array">
<item name="save" xsi:type="string">namespace\module\Block\Adminhtml\Edit\SaveButton</item>
<item name="save_and_continue" xsi:type="string">namespace\module\Block\Adminhtml\Edit\SaveAndContinueButton</item>
</item>
Respectivamente, dois arquivos SaveButton.php
e SaveAndContinueButton.php
são criados e ambos implementarButtonProviderInterface
Como eu sei, o botão é renderizado principalmente a partir de uma getButtonData
função. VejoSaveAndContinueButton.php
public function getButtonData()
{
$TodoItemId = $this->getTodoItemId();
$data = [];
if ($TodoItemId) {
$data = [
'label' => __('Save and Continue Edit'),
'class' => 'save',
'data_attribute' => [
'mage-init' => [
'button' => ['event' => 'saveAndContinueEdit'],
],
],
'sort_order' => 80,
];
}
return $data;
}
O data_attribute
é onde que eu não entendo. Como ele sabe qual arquivo manipular a solicitação de salvamento?
Se checarmos SaveButton.php
, vimos
$data = [
'label' => __('Save TodoItem'),
'class' => 'save primary',
'data_attribute' => [
'mage-init' => ['button' => ['event' => 'save']],
'form-role' => 'save',
],
'sort_order' => 90,
];
Eu sei no arquivo de configuração ui_component, há
<item name="submit_url" xsi:type="url" path="path/to/save"/>
Ambas as ações executam com êxito o mesmo Save.php
arquivo e isso faz sentido. O que me confunde muito data_attribute
e como SaveAndContinueButton
passa o parâmetro " back
" para que ele fique na mesma página em vez de ir para a grade (normalmente a grade é o ponto de entrada de um formulário, também conhecido como página de edição).
Se dermos outra olhada no deleteButton
, é outra paisagem
$data = [
'label' => __('Delete'),
'class' => 'delete',
'on_click' => 'deleteConfirm(\'' . __(
'Are you sure you want to do this?'
) . '\', \'' . $this->getDeleteUrl() . '\')',
'sort_order' => 20,
];
Ele executa diretamente o evento JavaScript onClick. Qualquer idéia / sugestão será apreciada. obrigado
Mais uma pergunta: qual é a diferença de data_attribute
e on_click
? ou vantagem um sobre o outro?