Wie lade ich mehrere Bilder in Form eines Admin-Panel-Rasters hoch?


8

Hier möchte ich mehrere Bilder in Admin-Panel-Rasterform in Magento hochladen. Ich erstelle Bilder, die in Form eines Admin-Panel-Rasters hochgeladen wurden. Hier habe ich meine Bild-Upload-Codierung angehängt.

[....]

$fieldset->addField('image', 'image', array(
            'name'      => 'image',
            'label'     => Mage::helper('magentostudy_design')->__('design Image'),
            'title'     => Mage::helper('magentostudy_design')->__('design Image'),
            'required'  => true,
            'disabled'  => $isElementDisabled
        ));
[....]

wenn ich mehrere Upload-Bilder mit diesem Argument ändere. 'multiple'=> 'multiple' Hier mein Code:

 [....]

    $fieldset->addField('image', 'image', array(
                'name'      => 'image',
                'multiple'  => 'multiple',
                'mulitple'  => true,
                'label'     => Mage::helper('magentostudy_design')->__('design Image'),
                'title'     => Mage::helper('magentostudy_design')->__('design Image'),
                'required'  => true,
                'disabled'  => $isElementDisabled
            ));
    [....]

Und auch ich habe den Namenswert einfach so als Array [] eingefügt 'name' => 'image[]',. Nein, ich erhalte kein Ergebnis, es wird immer noch ein einzelnes Bild hochgeladen. So erstellen Sie ein Konzept zum Hochladen mehrerer Bilder in Magento. Kann mir jemand helfen, dieses Problem zu lösen. Bitte führen Sie mich.


1
Ich interessiere mich auch sehr für diese Frage, habe einen kurzen Blick darauf geworfen und dieser Block scheint hinter dem Medien-Uploader für Produkte zu stehen Mage_Adminhtml_Block_Media_Uploader. Ich werde Ihre Frage genau verfolgen :)
Sander Mangel

Das Hinzufügen multiplehat aus diesem Grund keine Auswirkung : Varien_Data_Form_Element_Abstract::getHtmlAttributes. Dort finden Sie die Elementattribute, die Sie festlegen dürfen. Vielleicht sollten Sie Ihren benutzerdefinierten Eingabe-Renderer schreiben, der dies ermöglicht multiple.
Marius

1
Hi @SanderMangel ... Danke, dass du mich
ermutigst

Antworten:


6

Wenn Sie meinen Kommentar fortsetzen , sehen Sie hier, wie Sie das erreichen können, was Sie brauchen.
Sie müssen Ihren benutzerdefinierten Renderer für das Bildfeld erstellen. Erstellen Sie dazu diese Klasse in Ihrem Modul:

<?php 
class [Namespace]_[Module]_Block_Adminhtml_[Entity]_Helper_Image extends Varien_Data_Form_Element_Image{
    //make your renderer allow "multiple" attribute
    public function getHtmlAttributes(){
        return array_merge(parent::getHtmlAttributes(), array('multiple'));
    }
}

Fügen _prepareFormSie nun oben in Ihrem Feld (wo Sie Ihre Felder hinzufügen) diese Zeile hinzu, bevor Sie ein Feld hinzufügen:

$fieldset->addType('image', '[Namespace]_[Module]_Block_Adminhtml_[Entity]_Helper_Image');

Oder wenn Sie "politisch korrekt" sein wollen, fügen Sie es folgendermaßen hinzu:

$fieldset->addType('image', Mage::getConfig()->getBlockClassName('[module]/adminhtml_[entity]_helper_image'));

Dadurch wird Magento mitgeteilt, dass in Ihrem aktuellen Feldsatz alle Felder mit Typ imagevon Ihrer eigenen Klasse gerendert werden sollten.

Jetzt können Sie Ihr Feld ähnlich wie zuvor hinzufügen:

$fieldset->addField('image', 'image', array(
            'name'      => 'image[]', //declare this as array. Otherwise only one image will be uploaded
            'multiple'  => 'multiple', //declare input as 'multiple'
            'label'     => Mage::helper('magentostudy_design')->__('design Image'),
            'title'     => Mage::helper('magentostudy_design')->__('design Image'),
            'required'  => true,
            'disabled'  => $isElementDisabled
        ));

Das ist es.
Vergessen Sie nicht, die Platzhalter ( [Module]und andere) durch Ihre Werte zu ersetzen .
[BEARBEITEN]
Dies ist im Grunde die Möglichkeit, einen beliebigen Eingabetyp zu überschreiben / hinzuzufügen. Erstellen Sie Ihre eigene Klasse, die die ursprüngliche Eingabeklasse erweitern soll (oder Varien_Data_Form_Element_Abstractwenn Sie eine neue hinzufügen), und deklarieren Sie sie oben auf_prepareForm


Hallo @Marius ... Danke für die richtige Anleitung. Ich habe einen Zweifel. Was ist die Referenz [Entität] und die Entität, die in der Klasse angegeben wird?
Können

@ VIVEK-MDU. Entität ist das, was Sie bearbeiten. Es kann ein Produkt sein, ein Artikel ... Wie lautet der Klassenname Ihres Formulars? Daraus kann ich Ihnen sagen, welche Entität sein sollte. Theoretisch kann es alles sein. Sie können das sogar aus dem Klassennamen entfernen, aber ich habe es dort hinzugefügt, um die Konsistenz im Code zu gewährleisten.
Marius

@Marius für mehrere Ich muss eine separate Datei-Schaltfläche erstellen, um ein Bild hochzuladen. oder wie es mit mehreren
Bildern

@Marius: Das hat bei mir nicht funktioniert. Laden Sie immer noch einen Bild-Upload. Bitte irgendwelche Vorschläge dazu?
Sukeshini

1
Ausgezeichnet ! Diese Frage sollte geschützt werden
Ahsan Horani

0

Ich benutze diese Methode, um das Gleiche zu machen, aber mit Modul, Aw_blogaber wenn ich das hinzufüge

$fieldset->addType('image', Mage::getConfig()->getBlockClassName('aw_blog/adminhtml_blog_helper_image'));

Das Seitenformular für den Blog meines Beitrags ist weiß.

PS: Das Hochladen eines Bildes vor Ort ist ein Erfolg, für mehrere jedoch nicht.

Mymodul Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.