여러 탭에 Magento 2 Adminhtml 스프레드 폼


43

백엔드 모듈을 만들려고하는데 편집 페이지에서 admin-2column-left레이아웃을 사용 합니다.

각 탭에 양식을 만들고 싶지만 어떻게 할 수 있는지 이해할 수 없습니다.
이상적으로는 uiComponents다른 탭에 다른 양식을 할당하는 방법 이나 양식 에 대해 양식 을 정의하는 방법 을 알고 uiComponent싶지만 어떤 탭에서 어떤 필드 집합을 지정할 수 있는지 알고 싶습니다 .

이 질문을 유발하는 특정 상황은 한 탭 (여러 개의 텍스트 입력)과 다른 탭에서 dynamicRowsUI 구성 요소를 원한다는 표준 양식을 원한다는 것 입니다. 이 탭을 기본 및 광고 항목이라고합니다.

현재, 나는 이것을 다음과 같이 구현하고 있습니다 : Main은 _prepareForm클래스 내에서 블록 내 메소드에 정의되어 있습니다 Form\Generic. 이 양식은 동적 행을 추가 할 때까지 나타나고 잘 작동합니다.

내 레이아웃 파일에는 기본 탭을 추가하고 내용 블록을 할당하는 코드가 있습니다. 또한 동적 행을 포함하는 양식에 대한 컨테이너 line_items를 포함 하는 컨테이너 가 있습니다 uiComponent.

품목 탭은의 _beforeToHtml방법으로 생성되며 Widget\Tab그 내용은 getChildHtmlline_items 컨테이너에 대한 호출을 사용하여 할당됩니다 .

탭이 작동하고 올바른 구조로 채워져 행을 추가하고 제거 할 수 있습니다.

문제는 페이지를 제출할 때 품목 탭의 입력 만 제출된다는 것입니다.

그래서 나는 이것을 올바르게 설정하지 않았으며 모든 양식 요소를 추적하고 제출하도록 지시 할 수있는 방법이 필요하다는 것을 알고 있습니다. 이 구현의 대부분은 내가 원하는 것과 유사한 Category Product Attributes 폼의 설정을 리버스 엔지니어링하려는 시도에서 비롯되었습니다.

누구나 그것에 대해 알고 있습니까?


이것을 알아 낸 적이 있습니까?
jamil

1
스티븐-나는 당신이 모든 시간 후에 해결책을 찾았다 고 가정하고 있습니까? 그렇다면 솔루션으로 업데이트하십시오.
brentwpeterson

@Stephen Fritz-스크린 샷을 제공해 주시겠습니까?
Praful Rajput

이 질문에 여전히 답이 필요한지 물어볼 수 있습니까? 그렇다면 문제를 이해하고 있음을 확인할 수 있습니다. 별도의 양식으로 백엔드 화면을 작성하려고합니까? 또는 여러 탭 (uiComponent 방식)이있는 화면 이이 문제에 대한 해결책입니까?
Herve Tribouilloy 2016 년

1
@stephen Fritz-필드 셋 이름은 다른 곳과 충돌 할 수 있으므로 고유해야합니다. 나는 fieldset의 이름을 변경하여 같은 발행과 해결을했습니다
압둘 카디르

답변:


0

UI-Component를 사용하여 단일 양식으로 탭을 작성하려면 다음 코드를 사용하십시오.

<argument name="data" xsi:type="array">
    <item name="js_config" xsi:type="array">
        <item name="provider" xsi:type="string">custom_form.custom_form_data_source</item>
        <!--This is for tab -->
        <item name="deps" xsi:type="string">custom_form.custom_form_data_source</item>
    </item>

    <!--following tag add the tab into form-->
    <item name="label" xsi:type="string" translate="true">Test Details</item>
    <item name="reverseMetadataMerge" xsi:type="boolean">true</item>
   <item name="layout" xsi:type="array">
        <item name="type" xsi:type="string">tabs</item>
        <item name="navContainerName" xsi:type="string">left</item>
    </item>

</argument>

양식 요소 만들기

 <fieldset name="general">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="label" xsi:type="string">General Information</item>
        </item>
    </argument>

    <field name="name">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="source" xsi:type="string">general</item>
                <item name="label" xsi:type="string">Name</item>
                <item name="formElement" xsi:type="string">input</item>
                <item name="dataType" xsi:type="string">text</item>
                <item name="dataScope" xsi:type="string">name</item>
                <item name="validation" xsi:type="array">
                    <item name="required-entry" xsi:type="boolean">true</item>
                </item>
            </item>
        </argument>
    </field>
 </fieldset>
 <fieldset name="address">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="label" xsi:type="string">Address and Contact</item>
        </item>
    </argument>
    <field name="address_line1">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="source" xsi:type="string">address</item>
                <item name="label" xsi:type="string">Address Line1</item>
                <item name="formElement" xsi:type="string">input</item>
                <item name="datatype" xsi:type="string">text</item>
                <item name="datascope" xsi:type="string">address_line1</item>
            </item>
        </argument>
    </field>

    <field name="address_line2">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="source" xsi:type="string">address</item>
                <item name="label" xsi:type="string">Address Line2</item>
                <item name="formElement" xsi:type="string">input</item>
                <item name="datatype" xsi:type="string">text</item>
                <item name="datascope" xsi:type="string">address_line2</item>
            </item>
        </argument>
    </field>
  </fieldset>

이 코드는 관련 양식 필드가있는 양식에 2 개의 탭을 표시합니다.

이 솔루션이 당신을 위해 작동하기를 바랍니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.