ฉันได้สร้างแบบฟอร์มในผู้ดูแลระบบโดยใช้องค์ประกอบ 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.
ดังนั้น 2 คำถามที่นี่:
- นี่เป็นวิธีที่ถูกต้องในการเพิ่มองค์ประกอบของฟอร์มที่กำหนดเองไปยังฟอร์มผู้ดูแลระบบหรือไม่ (และถ้าเป็นเช่นนั้นได้อย่างไร)
- ฉันจะเพิ่มการใช้งานได้อย่างไร ฉันกำลังขุดผ่านโมดูล UI เพื่อดูว่าพวกเขาทำได้อย่างไร แต่ฉันไม่พบอะไรเลย
\Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition::setComponentData()
เพื่อเพิ่มองค์ประกอบที่กำหนดเองโดยใช้เหตุการณ์ แต่สิ่งนี้สะดวกสบายกว่านี้มาก! ฉันควรดูตัวอย่าง Magento 2 เหล่านั้นให้มากขึ้น