J'ai créé un formulaire dans l'administrateur en utilisant des composants d'interface utilisateur, donc dans mon view/adminhtml/ui_component/[module]_[entity]_form.xml
j'ai les éléments suivants:
<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>
Maintenant, je ne veux pas que cette valeur soit un textarea
, mais je veux créer ma propre magie HTML dans le backend pour cette valeur. Ce «HTML Magic» sera finalement beaucoup de JS / KnockOut qui sous l'eau envoie toujours des données cachées lors de la publication du formulaire, il doit donc faire partie du formulaire. J'ai essayé d'ajouter un rendu en ajoutant:
<item name="renderer" xsi:type="object">Vendor\Module\Block\Adminhtml\Renderer\Configurator</item>
Mais cela rend toujours la zone de texte. Ensuite, j'ai essayé de remplacer le formElement
par une classe personnalisée comme ceci:
<item name="formElement" xsi:type="object">Vendor\Module\Component\Form\Element\Configurator</item>
Mais alors je reçois l'erreur:
The requested component ("Vendor\Module\Component\Form\Element\Configurator") is not found. Before using, you must add the implementation.
Donc 2 questions ici:
- Est-ce la bonne façon d'ajouter un élément de formulaire personnalisé à un formulaire d'administration? (et si oui: comment?)
- Indépendamment de quoi que ce soit: comment ajouter l'implémentation? Je fouille dans le module d'interface utilisateur pour voir comment ils l'ont fait, mais je ne trouve rien.
la source
\Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition::setComponentData()
à ajouter un composant personnalisé en utilisant un événement, mais c'est beaucoup, beaucoup plus pratique! Je devrais vraiment approfondir ces exemples de Magento 2.Je ne suis pas sûr, mais je pense que je
shopping cart price rule
vais vous donner un indice à ce sujet, voici l'exemplePour plus de détails, vous pouvez visiter ce fichier
\vendor\magento\module-sales-rule\view\adminhtml\ui_component\sales_rule_form.xml
la source