Bidang input file gambar ui_component - formulir - gambar

8

Saat ini saya mencoba menggali lebih dalam ke Komponen UI tetapi saya agak terjebak di sini.

Karena akan sedikit banyak memposting semua kode di sini, saya hanya akan memposting beberapa tautan github yang relevan.

Yang berhasil adalah mengunggah gambar dan menyimpan nama file ke database.

Yang tidak berfungsi adalah memuat file di input file pada halaman edit form lagi.

Input gambar didefinisikan di sini: https://github.com/davidverholen/magento2-teaser/blob/develop/view/adminhtml/ui_component/teaser_item_form.xml#L83

Kelas saat ini kosong, saya mencoba banyak hal hari ini tetapi tidak ada yang tampak terlalu menjanjikan dan saya bahkan tidak yakin jika saya membutuhkannya: https://github.com/davidverholen/magento2-teaser/blob/develop/Ui/Component/ Formulir / Elemen / TeaserItemImage.php

DataSource untuk formulir ada di sini: https://github.com/davidverholen/magento2-teaser/blob/develop/Model/TeaserItem/DataProvider.php

(juga mencoba memuat image_url di sini dan menggunakan ini sebagai indeks bidang)

ada juga dokumen untuk ini dan saya mungkin terlalu bodoh untuk mengerti bagaimana melakukan ini: http://devdocs.magento.com/guides/v2.0/ui-components/ui-form.html

Adakah Ide atau siapa pun yang telah melakukan ini?

Terima kasih sebelumnya!

Memperbarui:

Saya menemukan ini di komponen media (yang digunakan untuk gambar): vendor / magento / module-ui / view / base / web / js / form / element / media.js

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

Saya baru dalam hal knockout.js keseluruhan, tetapi sepertinya ikatan nilai dihapus. Jadi harus ada cara lain untuk mengatur nilainya?

Saya juga mencoba mengatur pengikatan lagi dalam konfigurasi tetapi tidak berhasil. Mencoba ini (menambahkan image_path_abs ke sumber data yang berisi path file absolut):

<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>
David Verholen
sumber

Jawaban:

5

Di Magento 2.1, ini sebenarnya menjadi jauh lebih mudah.

Contoh yang baik untuk implementasi adalah formulir kategori: https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/view/adminhtml/ui_component/category_form.xml#L148

Maka Anda juga memerlukan Pengontrol untuk Unggah Gambar: https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/Controller/Adminhtml/Category/Image/Upload.php

Dan yang terakhir namun tidak sedikit logika dalam save controller, yang diharapkan akan segera di-refactored:

https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php#L259 https://github.com/magento/magento2/blob/develop /app/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php#L82

David Verholen
sumber
1
hai David, saya agak dalam situasi yang sama seperti yang Anda gambarkan dalam pertanyaan. Saya menjalankan fungsi pengunggahan dan nama gambar disimpan dalam basis data. Agar lebih jelas, ini dilakukan dalam bentuk "Tambahkan item baru". Tetapi ketika saya melihat salah satu item yang ada, elemen Gambar tidak muncul. Saya juga merujuk ke modul katalog ketika saya mengembangkan milik saya. Saya belum menggali lebih dalam. Tetapi untuk mendapatkan tampilan gambar, apakah saya perlu mengubah form dataSource / Collection untuk memasukkan image basePath?
Nero
Milik saya berfungsi secara default, apakah kode bidang sama dengan kode atribut?
LM_Fielding
1
@LM_Fielding, maaf saya tidak mengerti maksud Anda. Nama bidang adalah gambar yang sama dengan nama kolom dalam database. Jika saya memperlakukan gambar sebagai bidang teks input biasa, ini dapat ditampilkan seperti yang diharapkan. Bidang gambar hanya berupa kolom dari tabel, bukan EAV.
Nero
Apakah Anda memiliki pertanyaan atau kode ui xml Anda di mana saja? Perlihatkan Setup / InstallData dan xml Anda untuk formulir?
LM_Fielding
@LM_Fielding, ini pertanyaan saya magento.stackexchange.com/questions/140318/… . Silakan lihat di sana. terima kasih
Nero