Musisz „stworzyć” * swój własny komponent interfejsu użytkownika. Możesz to zrobić, rozszerzając składnik interfejsu użytkownika daty.
# 1 Dodaj kod XML do formularza
Dodaj pole do zestawu pól. W tym przykładzie wywoływany jest komponent, który będziemy tworzyć time
. Zauważ, że możesz zadeklarować a template
w następującym pliku XML. Jednak tak naprawdę nie przyniesie to żadnego pożytku, ponieważ szablon XHTML zawinie szablon Knockout, który faktycznie renderuje. Istnieją inne węzły, które możesz zadeklarować tutaj, np. Sprawdzanie poprawności.
<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 Utwórz komponent interfejsu użytkownika
// 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'
}
});
});
Kilka uwag na temat powyższego Javascript:
elementTmpl
to nie jest konieczne. Jeśli jednak chcesz dostosować szablon (obecnie module-ui/view/base/web/templates/form/element/date.html
), po prostu stwórz własny szablon i odwołaj się do niego elementTmpl
.
Dostępnych jest więcej opcji. Możesz znaleźć więcej na ich temat: http://trentrichardson.com/examples/timepicker/#tp-options . W kodzie znajduje się lista wszystkich wartości domyślnych:/lib/web/jquery/jquery-ui-timepicker-addon.js
Wynik końcowy:
- W tym momencie nie wierzę, że można zadeklarować własny komponent interfejsu użytkownika w sposób podobny do tego
definitions.xml
. Można je jednak rozszerzyć przy minimalnym wysiłku. (I jeśli istnieje sposób, proszę dać mi znać).