Um ein Backend-Formular über ui_component zu erstellen, definiere ich Folgendes in der Konfigurationsdatei, um die Schaltflächen save und saveAndContinue Button anzuzeigen
<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>
Beziehungsweise, zwei Dateien SaveButton.php
und SaveAndContinueButton.php
erstellt und beide implementierenButtonProviderInterface
Wie ich weiß, wird die Schaltfläche hauptsächlich aus einer getButtonData
Funktion gerendert . SehenSaveAndContinueButton.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;
}
Das data_attribute
ist, wo ich das nicht verstehe. Woher weiß es, welche Datei die Speicheranforderung verarbeiten soll?
Wenn wir das überprüfen SaveButton.php
, haben wir gesehen
$data = [
'label' => __('Save TodoItem'),
'class' => 'save primary',
'data_attribute' => [
'mage-init' => ['button' => ['event' => 'save']],
'form-role' => 'save',
],
'sort_order' => 90,
];
Ich weiß, in der Konfigurationsdatei ui_component gibt es
<item name="submit_url" xsi:type="url" path="path/to/save"/>
Beide Aktionen führen erfolgreich dieselbe Save.php
Datei aus und es ist sinnvoll. Was mich sehr verwirrt, ist data_attribute
und wie wird der SaveAndContinueButton
Parameter " back
" übergeben, damit er auf derselben Seite bleibt, anstatt zum Raster zu wechseln (normalerweise ist das Raster der Einstiegspunkt eines Formulars, auch als Bearbeitungsseite bezeichnet).
Wenn wir uns das noch einmal ansehen deleteButton
, ist es eine andere Landschaft
$data = [
'label' => __('Delete'),
'class' => 'delete',
'on_click' => 'deleteConfirm(\'' . __(
'Are you sure you want to do this?'
) . '\', \'' . $this->getDeleteUrl() . '\')',
'sort_order' => 20,
];
Das onClick JavaScript-Ereignis wird direkt ausgeführt. Jede Idee / Vorschlag wird geschätzt. Vielen Dank
Noch eine Frage: Was ist der Unterschied zu data_attribute
und on_click
? oder einen Vorteil gegenüber dem anderen?