मैं व्यवस्थापक सूची और फ़ॉर्म के लिए ui घटकों का उपयोग करके Magento 2 के लिए एक CRUD मॉड्यूल का निर्माण कर रहा हूं और मेरी एक इकाई में एक छवि फ़ील्ड है।
लेकिन मैं इसे काम नहीं कर सकता जैसा कि इसे करना चाहिए।
यहाँ है कि यह कैसे काम करना चाहिए।
जब ऐड मोड में या बिना अपलोड की गई इमेज के साथ एडिट मोड में यह एक साधारण फाइल इनपुट की तरह दिखना चाहिए।
जब कोई फ़ाइल अपलोड की जाती है तो उसे छवि पूर्वावलोकन और उसके नीचे एक डिलीट बॉक्स दिखाना चाहिए।
मैं बिल्कुल इस डिज़ाइन की तलाश नहीं कर रहा हूँ। यह अलग तरह से दिख सकता है लेकिन समान कार्यक्षमता है।
मैगेंटो 1 में मैं ऐसा करने में सक्षम था, बस अपना खुद का ब्लॉक रेंडर बनाकर
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;
}
}
और इसे मेरे फॉर्म ब्लॉक में जोड़ रहा हूं
$fieldset->addType(
'image',
Mage::getConfig()->getBlockClassName('{{namespace}}_{{module}}/adminhtml_{{entity}}_helper_image')
);
लेकिन मेरे पास Magento 2 में कोई फॉर्म ब्लॉक नहीं है।
मुझे पता है कि मैं 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>
जाहिर है मुझे यह वर्ग बनाना होगा, लेकिन मुझे क्या विस्तार करना चाहिए?
मुझे पता है कि मुझे इंटरफ़ेस लागू करने की आवश्यकता है, Magento\Framework\View\Element\UiComponentInterface
लेकिन मुझे कुछ भी नहीं मिला जिसे मैं बढ़ा सकता हूं।
तो मेरा असली सवाल यह है कि क्या मैं वांछित व्यवहार को प्राप्त करने के लिए कुछ वर्ग बढ़ा सकता हूं? यदि नहीं, तो मैं इस तत्व रेंडरर को कैसे बनाना शुरू कर सकता हूं?