Вам потрібно "створити" * свій власний компонент інтерфейсу. Це можна зробити, розширивши компонент інтерфейсу дати.
№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
. Однак ви можете продовжити їх з мінімальними зусиллями. (І якщо є спосіб, будь ласка, повідомте мене про це).