Saya sedang membangun modul CRUD untuk Magento 2 menggunakan komponen ui untuk daftar dan formulir admin dan salah satu entitas saya memiliki bidang gambar.
Tetapi saya tidak bisa membuatnya berfungsi sebagaimana mestinya.
Inilah cara kerjanya.
Ketika dalam mode tambah atau mode edit tanpa gambar yang diunggah, tampilannya akan tampak seperti input file sederhana.
Ketika sebuah file diunggah, ia harus memperlihatkan pratinjau gambar dan kotak hapus di bawahnya.
Saya tidak mencari desain ini persis. Itu bisa terlihat berbeda tetapi memiliki fungsi yang sama.
Di Magento 1 saya bisa melakukan ini, hanya dengan membuat block renderer saya sendiri
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;
}
}
Dan menambahkan ini di blok formulir saya
$fieldset->addType(
'image',
Mage::getConfig()->getBlockClassName('{{namespace}}_{{module}}/adminhtml_{{entity}}_helper_image')
);
Tapi saya tidak punya blok formulir di Magento 2.
Saya tahu saya bisa menggunakan nama kelas untuk bidang formulir di file komponen 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>
Jelas saya harus membuat kelas ini, tetapi apa yang harus saya sampaikan?
Yang saya tahu adalah saya perlu mengimplementasikan antarmuka Magento\Framework\View\Element\UiComponentInterface
tetapi saya tidak menemukan apa pun yang dapat saya kembangkan.
Jadi pertanyaan saya yang sebenarnya adalah: Dapatkah saya memperluas beberapa kelas untuk mencapai perilaku yang diinginkan? Jika tidak, bagaimana saya bisa mulai membuat elemen renderer ini?