Sie müssen Ihre eigene UI-Komponente erstellen. Sie können dies tun, indem Sie die Date UI Component erweitern.
# 1 Fügen Sie das XML zu Ihrem Formular hinzu
Fügen Sie das Feld der Feldmenge hinzu. In diesem Beispiel wird die zu erstellende Komponente aufgerufen time
. Beachten Sie, dass Sie template
in der folgenden XML eine deklarieren können. Dies ist jedoch nicht wirklich hilfreich, da die XHTML-Vorlage die Knockout-Vorlage umschließt, die das eigentliche Rendering ausführt. Es gibt andere Knoten, die Sie hier als Validierung deklarieren können.
<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 Erstellen Sie die UI-Komponente
// 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'
}
});
});
Ein paar Hinweise zum obigen Javascript:
elementTmpl
ist nicht nötig. Wenn Sie jedoch die Vorlage anpassen möchten (derzeitmodule-ui/view/base/web/templates/form/element/date.html
) , erstellen Sie einfach eine eigene Vorlage und verweisen Sie darauf elementTmpl
.
Es gibt mehr Optionen für die Eingabe. Sie können mehr über sie finden: http://trentrichardson.com/examples/timepicker/#tp-options . Im Code gibt es hier eine Liste aller Standardeinstellungen:/lib/web/jquery/jquery-ui-timepicker-addon.js
Endresultat:
- Zum gegenwärtigen Zeitpunkt glaube ich nicht, dass es möglich ist, Ihre eigene UI-Komponente auf ähnliche Weise wie die von zu deklarieren
definitions.xml
. Sie können jedoch erweitern sie mit minimalem Aufwand. (Und wenn es einen Weg gibt, lass es mich bitte wissen).