Magento 2에서 관리자 양식에 맞춤 입력란을 추가하려면 어떻게해야하나요?


9

UI 구성 요소를 사용하여 관리자에서 양식을 만들었으므로 view/adminhtml/ui_component/[module]_[entity]_form.xml다음과 같은 내용이 있습니다.

<field name="configuration">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="dataType" xsi:type="string">text</item>
            <item name="label" xsi:type="string" translate="true">Configuration</item>
            <item name="formElement" xsi:type="string">textarea</item>
            <item name="source" xsi:type="string">form</item>
            <item name="sortOrder" xsi:type="number">30</item>
            <item name="dataScope" xsi:type="string">configuration</item>
            <item name="validation" xsi:type="array">
                <item name="required-entry" xsi:type="boolean">true</item>
            </item>
        </item>
    </argument>
</field>

이제이 값을 원하지 않지만이 값 textarea에 대한 백엔드에서 고유 한 HTML 마법을 만들고 싶습니다. 이 'HTML Magic'은 결국 물 아래에서 양식을 게시 할 때 숨겨진 데이터를 전송하는 JS / KnockOut이 많으므로 양식의 일부 여야합니다. 나는 다음을 추가하여 렌더링을 추가하려고 시도했다.

<item name="renderer" xsi:type="object">Vendor\Module\Block\Adminhtml\Renderer\Configurator</item>

그러나 이것은 여전히 ​​텍스트 영역을 렌더링합니다. 그런 다음을 formElement사용자 정의 클래스로 바꾸려고했습니다 .

<item name="formElement" xsi:type="object">Vendor\Module\Component\Form\Element\Configurator</item>

그러나 오류가 발생합니다.

The requested component ("Vendor\Module\Component\Form\Element\Configurator") is not found. Before using, you must add the implementation.

두 가지 질문이 있습니다.

  1. 이것이 관리 양식에 사용자 정의 양식 요소를 추가하는 올바른 방법입니까? (그렇다면 어떻게?)
  2. 아무것도에 관계없이 구현을 어떻게 추가 할 수 있습니까? UI 모듈을 통해 그들이 어떻게했는지 보려고하지만 아무것도 찾을 수 없습니다.

답변:


10

제공 한 마 젠토 샘플 모듈 을 확인할 수 있습니다

<field name="color">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <!--component constructor-->
            <item name="component" xsi:type="string">Magento_SampleForm/js/form/element/color-select</item>
            <!--main template for form field that renders elementTmpl as a child template-->
            <item name="template" xsi:type="string">ui/form/field</item>
            <!--customized form element template that will show colors-->
            <item name="elementTmpl" xsi:type="string">Magento_SampleForm/form/element/color-select</item>
            <item name="label" xsi:type="string">Autumn colors</item>
            <item name="visible" xsi:type="boolean">true</item>
            <item name="dataType" xsi:type="string">text</item>
            <item name="formElement" xsi:type="string">input</item>
            <item name="source" xsi:type="string">sampleform</item>
        </item>
    </argument>
</field>

감사! 내가 찾던 정답! \Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition::setComponentData()이벤트를 사용하여 사용자 지정 구성 요소를 추가하려고 이미 시도했지만 훨씬 더 편리합니다! 나는 그 Magento 2 예제를 더 자세히 살펴 봐야합니다.
— Giel Berkers

3

확실하지 않지만 shopping cart price rule이것에 대한 힌트를 줄 것이라고 생각 합니다. 여기에 예가 있습니다.

<field name="stop_rules_processing">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">boolean</item>
                    <item name="formElement" xsi:type="string">checkbox</item>
                    <item name="source" xsi:type="string">sales_rule</item>
                    <item name="prefer" xsi:type="string">toggle</item>
                    <item name="valueMap" xsi:type="array">
                        <item name="true" xsi:type="number">1</item>
                        <item name="false" xsi:type="number">0</item>
                    </item>
                    <item name="default" xsi:type="number">0</item>
                    <item name="label" xsi:type="string" translate="true">Discard subsequent rules</item>
                </item>
            </argument>
        </field>
        <container name="actions_apply_to" >
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="sortOrder" xsi:type="number">40</item>
                </item>
            </argument>
            <htmlContent name="html_content">
                <argument name="block" xsi:type="object">Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Actions</argument>
            </htmlContent>
        </container>

자세한 내용은이 파일을 방문하십시오

\vendor\magento\module-sales-rule\view\adminhtml\ui_component\sales_rule_form.xml


팁 고마워! 이것은 단지 HTML 내용의 블록을 추가하는 것 같습니다. 그러나 XHR 이로 드 된 많은 KnockOut 논리가있는 복잡한 양식 요소를 만들어야합니다.
— Giel Berkers

관리자의 제품 편집 양식에 사용자 정의 필드를 추가하는 방법은 무엇입니까?
— jafar pinjar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.