Ben UI bileşenleri kullanarak admin bir form oluşturdum, bu yüzden benim view/adminhtml/ui_component/[module]_[entity]_form.xml
aşağıdaki var:
<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>
Şimdi bu değerin bir textarea
olmasını istemiyorum, ancak bu değerin arka ucunda kendi HTML sihrimi oluşturmak istiyorum. Bu 'HTML Magic' sonunda su altında hala form gönderirken bazı gizli veriler gönderen çok sayıda JS / KnockOut olacak, bu yüzden formun bir parçası olması gerekiyor. Ekleyerek bir render ekleme denedim:
<item name="renderer" xsi:type="object">Vendor\Module\Block\Adminhtml\Renderer\Configurator</item>
Ancak bu hala metin alanını oluşturur. Sonra formElement
böyle bir özel sınıf ile değiştirmeyi denedim :
<item name="formElement" xsi:type="object">Vendor\Module\Component\Form\Element\Configurator</item>
Ama sonra hatayı alıyorum:
The requested component ("Vendor\Module\Component\Form\Element\Configurator") is not found. Before using, you must add the implementation.
Burada 2 soru var:
- Bu, yönetici formuna özel form öğesi eklemenin doğru yolu mu? (ve eğer öyleyse: nasıl?)
- Her ne olursa olsun: uygulamayı nasıl ekleyebilirim? Nasıl yaptıklarını görmek için UI modülünü araştırıyorum, ancak hiçbir şey bulamıyorum.
\Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition::setComponentData()
bir olay kullanarak özel bir bileşen eklemek için bakıyordu , ama bu çok, çok daha uygun! Bu Magento 2 örneklerine daha çok bakmalıyım.