Eu criei um formulário no administrador usando componentes da interface do usuário, então no meu view/adminhtml/ui_component/[module]_[entity]_form.xml
eu tenho o seguinte:
<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>
Agora não quero que esse valor seja um textarea
, mas quero criar minha própria mágica HTML no back-end para esse valor. Esse 'HTML Magic' acabará sendo um monte de JS / KnockOut que, debaixo d'água, ainda envia alguns dados ocultos ao postar o formulário, portanto, ele precisa fazer parte do formulário. Tentei adicionar um renderizado adicionando:
<item name="renderer" xsi:type="object">Vendor\Module\Block\Adminhtml\Renderer\Configurator</item>
Mas isso ainda renderiza a área de texto. Então tentei substituir o formElement
por uma classe personalizada da seguinte maneira:
<item name="formElement" xsi:type="object">Vendor\Module\Component\Form\Element\Configurator</item>
Mas então eu recebo o erro:
The requested component ("Vendor\Module\Component\Form\Element\Configurator") is not found. Before using, you must add the implementation.
Então, 2 perguntas aqui:
- É o caminho certo para adicionar um elemento de formulário personalizado a um formulário de administrador? (e se sim: como?)
- Independentemente de qualquer coisa: como posso adicionar a implementação? Estou pesquisando o módulo da interface do usuário para ver como eles fizeram isso, mas não consigo encontrar nada.
fonte
\Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition::setComponentData()
adicionar um componente personalizado usando um evento, mas isso é muito, muito mais conveniente! Eu realmente deveria olhar mais para esses exemplos do Magento 2.Não tenho certeza, mas acho que
shopping cart price rule
vou dar uma dica sobre isso, aqui está o exemploPara mais detalhes, você pode visitar este arquivo
\vendor\magento\module-sales-rule\view\adminhtml\ui_component\sales_rule_form.xml
fonte