Để tạo một hình thức phụ trợ qua ui_component, tôi xác định sau đây trong tập tin cấu hình để hiển thị các nút tiết kiệm và saveAndContinue Nút
<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>
Tương ứng, hai tệp SaveButton.phpvà SaveAndContinueButton.phpđược tạo và cả hai thực hiệnButtonProviderInterface
Như tôi biết, nút chủ yếu được kết xuất từ một getButtonDatachức năng. XemSaveAndContinueButton.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;
}
Các data_attributelà nơi mà tôi không hiểu. Làm thế nào để nó biết tập tin nào để xử lý lưu yêu cầu?
Nếu chúng tôi kiểm tra SaveButton.php, chúng tôi đã thấy
$data = [
'label' => __('Save TodoItem'),
'class' => 'save primary',
'data_attribute' => [
'mage-init' => ['button' => ['event' => 'save']],
'form-role' => 'save',
],
'sort_order' => 90,
];
Tôi biết trong tập tin cấu hình ui_component, có
<item name="submit_url" xsi:type="url" path="path/to/save"/>
Cả hai hành động thực hiện thành công cùng một Save.phptập tin và nó có ý nghĩa. Điều khiến tôi bối rối là nhiều data_attributevà làm thế nào để SaveAndContinueButton vượt qua tham số " back" để nó biết ở cùng một trang thay vì đi vào lưới (thông thường lưới là điểm vào của một biểu mẫu, còn gọi là trang chỉnh sửa).
Nếu chúng ta nhìn khác deleteButton, đó là một cảnh quan khác
$data = [
'label' => __('Delete'),
'class' => 'delete',
'on_click' => 'deleteConfirm(\'' . __(
'Are you sure you want to do this?'
) . '\', \'' . $this->getDeleteUrl() . '\')',
'sort_order' => 20,
];
Nó trực tiếp thực hiện sự kiện onClick JavaScript. Bất kỳ ý tưởng / đề nghị sẽ được đánh giá cao. cảm ơn
Một câu hỏi nữa: sự khác biệt của data_attributevà on_click? hoặc lợi thế hơn một cái khác?