Per creare un modulo back-end tramite ui_component, definisco quanto segue nel file di configurazione per visualizzare i pulsanti Salva e Salva e Continua pulsante
<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>
Rispettivamente, vengono creati due file SaveButton.php
e SaveAndContinueButton.php
vengono entrambi implementatiButtonProviderInterface
Come so, il pulsante è principalmente reso da una getButtonData
funzione. VedereSaveAndContinueButton.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;
}
Il data_attribute
è dove che non capisco. Come fa a sapere quale file gestire la richiesta di salvataggio?
Se controlliamo il SaveButton.php
, abbiamo visto
$data = [
'label' => __('Save TodoItem'),
'class' => 'save primary',
'data_attribute' => [
'mage-init' => ['button' => ['event' => 'save']],
'form-role' => 'save',
],
'sort_order' => 90,
];
Lo so nel file di configurazione ui_component, c'è
<item name="submit_url" xsi:type="url" path="path/to/save"/>
Entrambe le azioni eseguono correttamente lo stesso Save.php
file e ha senso. Ciò che mi confonde molto è data_attribute
e come SaveAndContinueButton
passa il parametro " back
" in modo che sappia rimanere nella stessa pagina invece di andare alla griglia (normalmente la griglia è il punto di ingresso di un modulo, ovvero la pagina di modifica).
Se diamo un'altra occhiata a deleteButton
, è un altro paesaggio
$data = [
'label' => __('Delete'),
'class' => 'delete',
'on_click' => 'deleteConfirm(\'' . __(
'Are you sure you want to do this?'
) . '\', \'' . $this->getDeleteUrl() . '\')',
'sort_order' => 20,
];
Esegue direttamente l'evento JavaScript onClick. Qualsiasi idea / suggerimento sarà apprezzata. Grazie
Un'altra domanda: qual è il diverso di data_attribute
e on_click
? o vantaggio l'uno sull'altro?