Ich habe im Administrator ein Formular mit UI-Komponenten erstellt, daher habe view/adminhtml/ui_component/[module]_[entity]_form.xml
ich Folgendes:
<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>
Jetzt möchte ich nicht, dass dieser Wert ein Wert ist textarea
, aber ich möchte meine eigene HTML-Magie im Backend für diesen Wert erstellen. Diese 'HTML-Magie' wird irgendwann eine Menge JS / KnockOut sein, die unter Wasser beim Posten des Formulars immer noch einige versteckte Daten sendet, daher muss es Teil des Formulars sein. Ich habe versucht, ein gerendertes hinzuzufügen, indem ich Folgendes hinzufügte:
<item name="renderer" xsi:type="object">Vendor\Module\Block\Adminhtml\Renderer\Configurator</item>
Dies macht aber immer noch den Textbereich. Dann habe ich versucht, die formElement
durch eine benutzerdefinierte Klasse wie folgt zu ersetzen :
<item name="formElement" xsi:type="object">Vendor\Module\Component\Form\Element\Configurator</item>
Aber dann bekomme ich den Fehler:
The requested component ("Vendor\Module\Component\Form\Element\Configurator") is not found. Before using, you must add the implementation.
Also 2 Fragen hier:
- Ist dies der richtige Weg, um einem Administratorformular ein benutzerdefiniertes Formularelement hinzuzufügen? (und wenn ja: wie?)
- Unabhängig davon: Wie kann ich die Implementierung hinzufügen? Ich stöbere im UI-Modul, um zu sehen, wie sie es gemacht haben, aber ich kann nichts finden.
quelle
\Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition::setComponentData()
versucht, mithilfe eines Ereignisses eine benutzerdefinierte Komponente hinzuzufügen, aber das ist viel, viel bequemer! Ich sollte mir diese Magento 2-Beispiele wirklich genauer ansehen.Ich bin mir nicht sicher, aber ich denke, ich
shopping cart price rule
werde Ihnen einen Hinweis dazu geben. Hier ist das BeispielFür weitere Details können Sie diese Datei besuchen
\vendor\magento\module-sales-rule\view\adminhtml\ui_component\sales_rule_form.xml
quelle