Magento2 ui_component - form - campo di immissione file immagine


8

Attualmente sto cercando di scavare più a fondo nei componenti dell'interfaccia utente ma sono un po 'bloccato qui.

Dal momento che sarebbe un po 'troppo per pubblicare tutto il codice qui, posterò solo alcuni collegamenti github rilevanti.

Ciò che funziona è caricare un'immagine e salvare il nome del file nel database.

Ciò che non funziona è caricare nuovamente il file nell'input del file nella pagina del modulo di modifica.

L'input dell'immagine è definito qui: https://github.com/davidverholen/magento2-teaser/blob/develop/view/adminhtml/ui_component/teaser_item_form.xml#L83

La classe è attualmente vuota, ho provato molte cose oggi, ma nulla sembrava troppo promettente e non sono nemmeno sicuro di averne bisogno: https://github.com/davidverholen/magento2-teaser/blob/develop/Ui/Component/ modulo / Element / TeaserItemImage.php

L'origine dati per il modulo è qui: https://github.com/davidverholen/magento2-teaser/blob/develop/Model/TeaserItem/DataProvider.php

(ho anche provato a caricare image_url qui e usarlo come indice di campo)

c'è anche un documento per questo e potrei essere troppo stupido per capire come farlo: http://devdocs.magento.com/guides/v2.0/ui-components/ui-form.html

Qualche idea o qualcuno che lo abbia già fatto?

Grazie in anticipo!

Aggiornare:

Ho trovato questo nel componente multimediale (che viene utilizzato per le immagini): vendor / magento / module-ui / view / base / web / js / form / element / media.js

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

Sono nuovo di tutto il knockout.js, ma questo sembra che il valore sia stato rimosso. Quindi ci deve essere un altro modo per impostare il valore?

Ho anche provato a impostare nuovamente l'associazione nella configurazione, ma senza successo. Ho provato questo (aggiunti image_path_abs all'origine dati che contiene il percorso assoluto del file):

<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>

Risposte:


5

1
ciao David, sono quasi nella stessa situazione che hai descritto in questione. Ho funzionato la funzione di caricamento e salvato il nome delle immagini nel database. Per essere chiari, questo viene fatto nel modulo "Aggiungi nuovo elemento". Ma quando visualizzo uno di quegli elementi esistenti, l'elemento Immagine non viene visualizzato. Ho anche fatto riferimento al modulo catalogo quando ho sviluppato il mio. Non ho ancora scavato in profondità. Ma per visualizzare l'immagine, devo modificare il modulo dataSource / Collection per includere l'immagine basePath?
Nero,

Il mio funziona di default, il codice del campo è uguale al codice dell'attributo?
LM_Fielding

1
@LM_Fielding, mi dispiace non capisco il tuo significato. Il nome del campo è immagine che corrisponde al nome della colonna nel database. Se considero l'immagine come un normale campo di testo di input, può mostrare come previsto. Il campo immagine è semplicemente una colonna di una tabella, non EAV.
Nero,

Hai una domanda o il tuo codice ui xml ovunque? Mostra il tuo Setup / InstallData e xml per il modulo?
LM_Fielding

@LM_Fielding, ecco la mia domanda magento.stackexchange.com/questions/140318/… . Si prega di dare un'occhiata lì. grazie
Nero,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.