Tôi đã tạo một biểu mẫu trong quản trị viên bằng các thành phần UI, vì vậy trong phần tôi view/adminhtml/ui_component/[module]_[entity]_form.xml
có:
<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>
Bây giờ tôi không muốn giá trị này là một textarea
, nhưng tôi muốn tạo ra phép thuật HTML của riêng mình trong phần phụ trợ cho giá trị này. 'Ma thuật HTML' này cuối cùng sẽ có rất nhiều JS / KnockOut mà dưới nước vẫn gửi một số dữ liệu ẩn khi đăng biểu mẫu, vì vậy nó cần phải là một phần của biểu mẫu. Tôi đã thử thêm một kết xuất bằng cách thêm:
<item name="renderer" xsi:type="object">Vendor\Module\Block\Adminhtml\Renderer\Configurator</item>
Nhưng điều này vẫn làm cho textarea. Sau đó, tôi đã thử thay thế formElement
bằng một lớp tùy chỉnh như vậy:
<item name="formElement" xsi:type="object">Vendor\Module\Component\Form\Element\Configurator</item>
Nhưng sau đó tôi nhận được lỗi:
The requested component ("Vendor\Module\Component\Form\Element\Configurator") is not found. Before using, you must add the implementation.
Vì vậy, 2 câu hỏi ở đây:
- Đây có phải là cách đúng để thêm một yếu tố biểu mẫu tùy chỉnh vào biểu mẫu quản trị viên? (và nếu vậy: làm thế nào?)
- Bất kể điều gì: làm thế nào tôi có thể thêm việc thực hiện? Tôi đang đào qua mô-đun UI để xem họ đã làm như thế nào, nhưng tôi không thể tìm thấy gì.
\Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition::setComponentData()
để thêm một thành phần tùy chỉnh bằng cách sử dụng một sự kiện, nhưng điều này thuận tiện hơn nhiều! Tôi thực sự nên xem xét nhiều hơn về các ví dụ Magento 2.