마 젠토 2-DateTime UI 구성 요소를 추가하는 방법


18

새 페이지를 추가하는 동안 CMS 페이지 섹션에서 새 필드를 날짜 시간으로 추가하고 싶습니다 .magento가 UI 구성 요소를 사용하여 발견했기 때문에 파고 난 후에 아래 코드를 사용하여 날짜 필드를 추가 할 수 있지만 날짜 시간 필드를 추가 할 수는 없었습니다. 누구든지 도울 수 있습니다.

날짜 추가 필드 코드 :

<field name="start_date">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="dataType" xsi:type="string">string</item>
            <item name="label" xsi:type="string" translate="true">Go Live Start Date</item>
            <item name="formElement" xsi:type="string">date</item>
            <item name="source" xsi:type="string">page</item>
            <item name="sortOrder" xsi:type="number">21</item>
            <item name="dataScope" xsi:type="string">start_date</item>
            <item name="validation" xsi:type="array">
                <item name="required-entry" xsi:type="boolean">true</item>
            </item>
        </item>
    </argument>
</field>

달성하기 위해 재정의해야하는 파일 :

vendor/magento/module-cms/view/adminhtml/ui_component/cms_block_form.xml

@sivakumar 내 대답이 도움이 되었습니까?
Siarhey Uchukhlebau

예 @SiarheyUchukhlebau, 그것은 많은 도움이되었습니다.
MagentoDev


@TejabhagavanKollepara 왜 9 개월 전 질문을 4 개월 전 질문과 중복으로 표시 하시겠습니까?!
Siarhey Uchukhlebau 7:15에

답변:


32

dateTime 선택기를 추가하려면 xml 파일에서 다음 지시문을 사용해야합니다.

<field name="start_date">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="dataType" xsi:type="string">string</item>
            <item name="label" xsi:type="string" translate="true">Go Live Start Date</item>
            <item name="formElement" xsi:type="string">date</item>
            <item name="source" xsi:type="string">page</item>
            <item name="sortOrder" xsi:type="number">21</item>
            <item name="dataScope" xsi:type="string">start_date</item>
            <item name="validation" xsi:type="array">
                <item name="required-entry" xsi:type="boolean">true</item>
            </item>
            <item name="options" xsi:type="array">
                <item name="dateFormat" xsi:type="string">yyyy-MM-dd</item>
                <item name="timeFormat" xsi:type="string">HH:mm:ss</item>
                <item name="showsTime" xsi:type="boolean">true</item>
            </item>
        </item>
    </argument>
</field>

중요한 것은 showsTime옵션입니다.

결과는 다음과 같아야합니다.

날짜-시간 ui 요소 결과

UI 요소를 디버깅하려면 브라우저 콘솔 (페이지의)에서이 명령을 사용하십시오.

require('uiRegistry').get('index = start_date')

date모든 초기 옵션과 가능한 모든 기능을 가진 요소를 반환합니다 .

UI 요소 객체

XML 내부에서 요소를 정의 할 때 사용할 수 있습니다.

추가 정보로 :

date(도 dateTime) 요소는 여기에서 볼 수 있습니다 :

app/code/Magento/Ui/view/base/web/js/form/element/date.js

정적 파일에서 :

pub/static/adminhtml/Magento/backend/en_US/Magento_Ui/js/form/element/date.js

날짜-요소 클래스 (객체)에는 prepareDateTimeFormats중요한 옵션 showsTime이 선택 되어있는 메소드 가 있습니다.

/**
 * Prepares and converts all date/time formats to be compatible
 * with moment.js library.
 */
prepareDateTimeFormats: function () {
    this.pickerDateTimeFormat = this.options.dateFormat;

    if (this.options.showsTime) {
        this.pickerDateTimeFormat += ' ' + this.options.timeFormat;
    }

    this.pickerDateTimeFormat = utils.normalizeDate(this.pickerDateTimeFormat);

    if (this.dateFormat) {
        this.inputDateFormat = this.dateFormat;
    }

    this.inputDateFormat = utils.normalizeDate(this.inputDateFormat);
    this.outputDateFormat = utils.normalizeDate(this.outputDateFormat);

    this.validationParams.dateFormat = this.outputDateFormat;
}

시간 선택기 만 표시하려면 어떻게합니까? @Siarhey
Chauhan

@RonakChauhan DateTime요소는 항상 날짜를 렌더링 하므로 다른 사용자 지정 요소가 필요 합니다.
Siarhey Uchukhlebau

하지만 어떻게해야합니까?
Ronak Chauhan

@RonakChauhan 추상 UI 요소를 확장하고 다음과 같은 것을 사용해야합니다..timepicker()
Siarhey Uchukhlebau

1
혼자 솔루션을 찾아, 당신의 대답은이 잘못을 TIMEFORMAT을 , 우리가 바꿀 필요 hh:mm:ssHH:mm:ss그렇지 않으면 UI Componet에서 03:00:00 PM이되었다됩니다 03:00:00 AM12 시간이 부족하고 할 수없는 오후의 시간 저장 데이터베이스 테이블입니다.
Key Shang

2

이 답변이 당신이 놓친 것에 대한 아이디어를 제공하기를 바랍니다.

PHP를 통해 날짜 시간 필드의 UI 구성 요소를 추가했습니다 (잘 작동합니다)

$fieldset->addField(
        'event_date',
        'date',
        [
            'name' => 'event_date',
            'label' => __('Date'),
            'title' => __('Date'),
            'required' => true,
            'date_format' => 'yyyy-MM-dd',
            'time_format' => 'hh:mm:ss'
        ]
);

당신의 참고를 위해 쉬운

XML 파일과 비교하여 date_formattime_format을 제외한 모든 값이 있으므로 XML 파일에서 두 값을 모두 설정하십시오.

자세한 내용은이 전체 소스 코드 를 참조하십시오


"vendor / magento / module-cms / view / adminhtml / ui_component / cms_block_form.xml"파일을 통해 위의 코드를 통합하는 방법을 알려주십시오.
MagentoDev

source사용자 정의 이름으로 변경 하려면 어떻게 합니까? 어떤 요구 사항이 있습니까?
Vasilii Burlacu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.