Bạn cần "tạo" * Thành phần UI của riêng bạn. Bạn có thể làm điều này bằng cách mở rộng Thành phần UI ngày.
# 1 Thêm XML vào biểu mẫu của bạn
Thêm trường vào bộ trường. Trong ví dụ này, thành phần mà chúng ta sẽ tạo được gọi time
. Lưu ý rằng bạn có thể khai báo a template
trong XML sau. Tuy nhiên, nó thực sự sẽ không làm được gì vì đây là mẫu XHTML sẽ bao bọc mẫu Knockout thực hiện kết xuất thực tế. Có các nút khác bạn có thể khai báo ở đây như xác nhận.
<field name="time_field">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Time</item>
<item name="dataType" xsi:type="string">text</item>
<item name="formElement" xsi:type="string">date</item>
<item name="dataScope" xsi:type="string">time_field</item>
<item name="component" xsi:type="string">Your_Module/js/form/element/time</item>
</item>
</argument>
</field>
# 2 Tạo thành phần UI
// app/code/Your/Module/view/adminhtml/web/js/form/element/time.js
define([
'Magento_Ui/js/form/element/date'
], function(Date) {
'use strict';
return Date.extend({
defaults: {
options: {
showsDate: false,
showsTime: true,
timeOnly: true
},
elementTmpl: 'ui/form/element/date'
}
});
});
Một vài lưu ý về Javascript trên:
elementTmpl
không cần thiết. Tuy nhiên, nếu bạn muốn tùy chỉnh mẫu (hiện tại module-ui/view/base/web/templates/form/element/date.html
), chỉ cần tạo mẫu của riêng bạn và tham khảo mẫu đó elementTmpl
.
Có nhiều lựa chọn hơn cho đầu vào. Bạn có thể tìm hiểu thêm về chúng: http://trentrichardson.com/examples/timepicker/#tp-options . Trong mã, có một danh sách tất cả các mặc định ở đây:/lib/web/jquery/jquery-ui-timepicker-addon.js
Kết quả cuối cùng:
- Tại thời điểm này, tôi không tin rằng có thể khai báo Thành phần UI của riêng bạn theo cách tương tự như vậy
definitions.xml
. Tuy nhiên, bạn có thể mở rộng chúng với nỗ lực tối thiểu. (Và, nếu có một cách, xin vui lòng cho tôi biết).