Anda perlu "membuat" * Komponen UI Anda sendiri. Anda dapat melakukan ini dengan memperluas Komponen UI Tanggal.
# 1 Tambahkan XML ke formulir Anda
Tambahkan bidang ke bidang pengaturan. Dalam contoh ini, komponen yang akan kita buat dipanggil time
. Perhatikan bahwa Anda dapat mendeklarasikan template
dalam XML berikut. Namun, itu tidak benar-benar ada gunanya karena itu adalah template XHTML yang akan membungkus template Knockout yang melakukan rendering yang sebenarnya. Ada node lain yang bisa Anda nyatakan di sini seperti validasi.
<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 Buat Komponen 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'
}
});
});
Beberapa catatan tentang Javascript di atas:
elementTmpl
tidak perlu. Namun, jika Anda ingin menyesuaikan template (saat ini module-ui/view/base/web/templates/form/element/date.html
), buat saja template Anda sendiri dan rujuk dengan elementTmpl
.
Ada lebih banyak opsi untuk input. Anda dapat menemukan lebih banyak tentang mereka: http://trentrichardson.com/examples/timepicker/#tp-options . Dalam kode, ada daftar semua default di sini:/lib/web/jquery/jquery-ui-timepicker-addon.js
Hasil akhir:
- Pada titik ini, saya tidak percaya adalah mungkin untuk mendeklarasikan Komponen UI Anda sendiri dengan cara yang mirip dengan itu
definitions.xml
. Namun, Anda dapat memperpanjangnya dengan sedikit usaha. (Dan, jika ada jalan, tolong beri tahu saya).