Я будую модуль CRUD для Magento 2, використовуючи компоненти ui для списку та форми адміністратора, і одна з моїх сутностей має поле зображення.
Але я не можу змусити його працювати як слід.
Ось як це має працювати.
У режимі додавання або в режимі редагування без завантаженого зображення це має виглядати як простий файл.
Коли файл завантажується, він повинен показувати попередній перегляд зображення та поле видалення під ним.
Я не шукаю саме цієї конструкції. Це може виглядати інакше, але мати однаковий функціонал.
У Magento 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
але я не знайшов нічого, що можу розширити.
Отже, моє справжнє запитання: чи можу я розширити деякий клас, щоб досягти бажаної поведінки? Якщо ні, то як я можу розпочати створення цього елемента візуалізації?