Saya telah membuat formulir di admin menggunakan komponen UI, jadi di saya, view/adminhtml/ui_component/[module]_[entity]_form.xml
saya memiliki yang berikut:
<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>
Sekarang saya tidak ingin nilai ini menjadi textarea
, tetapi saya ingin membuat sihir HTML saya sendiri di backend untuk nilai ini. 'HTML Magic' ini pada akhirnya akan menjadi banyak JS / KnockOut yang di bawah air masih mengirimkan beberapa data tersembunyi saat memposting formulir, sehingga harus menjadi bagian dari formulir. Saya mencoba menambahkan yang diberikan dengan menambahkan:
<item name="renderer" xsi:type="object">Vendor\Module\Block\Adminhtml\Renderer\Configurator</item>
Tapi ini masih membuat textarea. Lalu saya mencoba mengganti formElement
dengan kelas kustom seperti:
<item name="formElement" xsi:type="object">Vendor\Module\Component\Form\Element\Configurator</item>
Tapi kemudian saya mendapatkan kesalahan:
The requested component ("Vendor\Module\Component\Form\Element\Configurator") is not found. Before using, you must add the implementation.
Jadi 2 pertanyaan di sini:
- Apakah ini cara yang tepat untuk menambahkan elemen formulir kustom ke formulir admin? (dan jika demikian: bagaimana?)
- Apa pun yang terjadi: bagaimana saya bisa menambahkan implementasinya? Saya menggali melalui modul UI untuk melihat bagaimana mereka melakukannya, tetapi saya tidak dapat menemukan apa pun.
\Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition::setComponentData()
untuk menambahkan komponen khusus dengan menggunakan suatu acara, tetapi ini jauh, jauh lebih nyaman! Saya benar-benar harus melihat lebih dalam contoh-contoh Magento 2 itu.