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.