Tôi đang xây dựng mô-đun CRUD cho Magento 2 bằng cách sử dụng các thành phần ui cho danh sách và biểu mẫu quản trị viên và một trong các thực thể của tôi có trường hình ảnh.
Nhưng tôi không thể làm cho nó hoạt động như bình thường.
Đây là cách nó nên hoạt động.
Khi ở chế độ thêm hoặc trong chế độ chỉnh sửa không có hình ảnh được tải lên, nó sẽ trông giống như một tệp nhập đơn giản.
Khi một tập tin được tải lên, nó sẽ hiển thị xem trước hình ảnh và một hộp xóa bên dưới nó.
Tôi không tìm kiếm chính xác thiết kế này. Nó có thể trông khác nhau nhưng có cùng chức năng.
Trong Magento 1 tôi đã có thể làm điều này, chỉ bằng cách tạo trình kết xuất khối của riêng tôi
class {{Namespace}}_{{Module}}_Block_Adminhtml_{{Entity}}_Helper_Image extends Varien_Data_Form_Element_Image
{
protected function _getUrl()
{
$url = false;
if ($this->getValue()) {
$url = Mage::helper('{{namespace}}_{{module}}/{{entity}}_image')->getImageBaseUrl().$this->getValue();
}
return $url;
}
}
Và thêm phần này vào khối biểu mẫu của tôi
$fieldset->addType(
'image',
Mage::getConfig()->getBlockClassName('{{namespace}}_{{module}}/adminhtml_{{entity}}_helper_image')
);
Nhưng tôi không có khối biểu mẫu trong Magento 2.
Tôi biết tôi có thể sử dụng tên lớp cho trường biểu mẫu trong tệp thành phần ui
<field name="image" class="Class\Name\Here">
<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">Resume</item>
<item name="formElement" xsi:type="string">image</item>
<item name="source" xsi:type="string">[entity]</item>
<item name="dataScope" xsi:type="string">image</item>
</item>
</argument>
</field>
Rõ ràng tôi phải tạo lớp này, nhưng tôi nên mở rộng cái gì?
Tất cả những gì tôi biết là tôi cần thực hiện giao diện Magento\Framework\View\Element\UiComponentInterface
nhưng tôi không tìm thấy gì tôi có thể mở rộng.
Vì vậy, câu hỏi thực sự của tôi là: Tôi có thể mở rộng một số lớp để đạt được hành vi mong muốn không? Nếu không, làm thế nào tôi có thể bắt đầu tạo trình kết xuất phần tử này?