Вам нужно «создать» * свой собственный компонент пользовательского интерфейса. Вы можете сделать это, расширив компонент Date UI.
# 1 Добавьте XML в вашу форму
Добавьте поле в набор полей. В этом примере компонент, который мы будем создавать, называется time
. Обратите внимание, что вы можете объявить template
в следующем XML. Однако на самом деле это не принесет пользы, так как это шаблон XHTML, который обернет шаблон Knockout, который выполняет фактический рендеринг. Есть и другие узлы, которые вы можете объявить здесь как валидация.
<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 Создание компонента пользовательского интерфейса
// 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'
}
});
});
Несколько замечаний по вышеуказанному Javascript:
elementTmpl
не обязательно. Однако, если вы хотите настроить шаблон (в настоящее время module-ui/view/base/web/templates/form/element/date.html
), просто создайте свой собственный шаблон и ссылайтесь на него elementTmpl
.
Есть больше вариантов для ввода. Вы можете найти больше о них: http://trentrichardson.com/examples/timepicker/#tp-options . В коде есть список всех значений по умолчанию:/lib/web/jquery/jquery-ui-timepicker-addon.js
Конечный результат:
- На данный момент, я не верю, что можно объявить свой собственный компонент пользовательского интерфейса способом, аналогичным тому, который используется в
definitions.xml
. Однако вы можете расширить их с минимальными усилиями. (И, если есть способ, пожалуйста, дайте мне знать).