我已经使用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.
所以这里有两个问题:
- 这是向管理表单添加自定义表单元素的正确方法吗?(如果是这样:如何?)
- 无论如何:如何添加实现?我正在研究UI模块以了解他们是如何做到的,但是我什么也找不到。
\Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition::setComponentData()
通过使用事件来添加自定义组件,但这要方便得多!我真的应该更多地研究那些Magento 2示例。