5

私は正常に動作しているadminhtmlモジュールを作成しました。新しいアイテムの作成フォームには、名前、画像、URL、および電子メール ID の 4 つのフィールドがあります。

ファイルアップローダーを使用して画像をアップロードしました。正常に動作していますが、複数の画像をアップロードできません。

複数の画像アップローダーを持つことは可能ですか? これが私の単純な画像アップローダーコードです。

  if(isset($data['image']) && $data['image'] != ''){
        $finderLink = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) .'finder/store_locator/'.$data['image'];
        $finderName = $data['image'];
        $fieldset->addField('imagelabel', 'label', array(
            'label' => Mage::helper('finder')->__('Location Image'),
            'name'  =>'image',
            'value'     => $finderLink,
            'after_element_html' => '<img src="'.$finderLink .'" alt=" '. $finderName .'" height="120" width="120" />',
        ));

        $fieldset->addField('image', 'image', array(
            'label' => Mage::helper('finder')->__('Change image'),
            'required' => false,
            'name' => 'image',
        ));

    }else{
        $fieldset->addField('image', 'image', array(
            'label' => Mage::helper('finder')->__('image'),
            'required' => false,
            'name' => 'image',
        ));
    }

ここに画像の説明を入力

カスタム モジュールで複数の画像アップローダを使用するには、助けが必要です。

4

3 に答える 3

8

画像フィールド用のカスタム レンダラーを作成する必要があります。このために、モジュールに次のクラスを作成します。

<?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'));
    }
}

(フィールドを追加する場所)の上部に_prepareForm、フィールドを追加する前に次の行を追加します。

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

または、「政治的に正しく」なりたい場合は、次のように追加します。

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

imageこれにより、現在のフィールドセットで、型を持つすべてのフィールドを独自のクラスでレンダリングする必要があることが Magento に通知されます。

これで、同じようにフィールドを追加できます。

$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('helper_alias')->__('Image'),
            'title'     => Mage::helper('helper_alias')->__('Image'),
            'required'  => true,
        ));

それでおしまい。プレースホルダー (およびその他) を値
に置き換えることを忘れないでください。[Module]

これは基本的に、必要な入力タイプをオーバーライド/追加する方法です。元の入力クラスを拡張する独自のクラスを作成し (またはVarien_Data_Form_Element_Abstract新しいクラスを追加する場合)、それを_prepareForm

于 2013-10-07T12:00:39.870 に答える
1

このコードを Web アプリケーションで使用しました。試してみてください。

$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
        ));
于 2013-10-07T12:18:27.383 に答える
-1

必要に応じて、無料でダウンロードできるモジュールを用意します。

これが展示品です。 ここに画像の説明を入力

于 2013-12-24T09:02:09.750 に答える