Magento2 ui_component-表单-图像文件输入字段


8

我目前正在尝试更深入地研究UI组件,但我有点卡在这里。

由于在这里发布所有代码会有点麻烦,因此我将发布一些相关的github链接。

有效的方法是上载图像并将文件名保存到数据库。

不起作用的是再次将文件加载到编辑表单页面上输入的文件中。

图像输入在此处定义:https : //github.com/davidverholen/magento2-teaser/blob/develop/view/adminhtml/ui_component/teaser_item_form.xml#L83

该课程目前是空的,我今天尝试了很多事情,但是看起来似乎没有什么希望,我甚至不确定我是否需要它:https : //github.com/davidverholen/magento2-teaser/blob/develop/Ui/Component/表格/元素/TeaserItemImage.php

表单的数据源在这里:https : //github.com/davidverholen/magento2-teaser/blob/develop/Model/TeaserItem/DataProvider.php

(也尝试在此处加载image_url并将其用作字段索引)

对此也有一个文档,我可能对js太愚蠢,无法理解如何执行此操作:http : //devdocs.magento.com/guides/v2.0/ui-components/ui-form.html

有任何想法或已经做到这一点的人吗?

提前谢谢!

更新:

我在媒体组件(用于图像)中找到了这一点: vendor / magento / module-ui / view / base / web / js / form / element / media.js

return Abstract.extend({
        defaults: {
            links: {
                value: ''
            }
        },

我是整个敲门js的新手,但是好像值绑定已删除。因此,必须有另一种设置值的方法吗?

我也尝试再次在配置中设置绑定,但没有成功。尝试过此操作(将image_path_abs添加到包含绝对文件路径的数据源中):

<field name="image_path" class="DavidVerholen\Teaser\Ui\Component\Form\Element\TeaserItemImage">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="links" xsi:type="array">
                <item name="value" xsi:type="string">teaser_item_form.teaser_item_form_data_source.general.image_path_abs</item>
            </item>
            <item name="label" xsi:type="string">Image</item>
            <item name="visible" xsi:type="boolean">true</item>
            <item name="dataType" xsi:type="string">text</item>
            <item name="formElement" xsi:type="string">image</item>
            <item name="source" xsi:type="string">general</item>
        </item>
    </argument>
</field>

Answers:


5

1
大卫,您好,我遇到的情况与您描述的情况相同。我得到了上传功能,并且图像名称保存在数据库中。要清楚,这是在“添加新项”表单中完成的。但是,当我查看任何现有项目时,Image元素不会显示。我开发我的产品时也提到了目录模块。我还没有深入。但是为了获得图像显示,我是否需要更改表格dataSource / Collection以包括图像basePath?
Nero

我的默认情况下有效,域代码与属性代码相同吗?
LM_Fielding

1
@LM_Fielding,对不起,我没有您的意思。字段名称是image,与数据库中的列名称相同。如果我将图像视为普通的输入文本字段,则它可以按预期显示。image字段只是表中的一列,而不是EAV。
Nero

您在任何地方都有问题或ui xml代码吗?显示表单的Setup / InstallData和xml?
LM_Fielding

@LM_Fielding,这是我的问题magento.stackexchange.com/questions/140318/…。请在那里看看。谢谢
Nero
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.