管理パネルのグリッド形式で複数の画像をアップロードする方法は?


8

ここでは、magentoの管理パネルグリッド形式で複数の画像をアップロードしたいと思います。管理パネルのグリッド形式で画像を作成します。ここに画像アップロードコーディングを添付しました。

[....]

$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
        ));
[....]

この引数を使用して複数のアップロード画像を変更すると、'multiple'=> 'multiple' ここに私のコード:

 [....]

    $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
            ));
    [....]

また、このように名前の値をarray []として配置しました'name' => 'image[]',。いいえ、結果は表示されません。単一の画像がアップロードされます。magentoで複数の画像アップロードのコンセプトを作成する方法。誰でもこの問題を解決するのに役立ちますか?


1
私もこの質問に本当に興味があり、簡単に見てみると、このブロックは製品のメディアアップローダーの背後にあるようですMage_Adminhtml_Block_Media_Uploader。私はあなたの質問に従います:)
サンダーマンゲル

multipleこのため、追加しても効果はありませんVarien_Data_Form_Element_Abstract::getHtmlAttributes。そこには、設定が許可されている要素属性があります。たぶん、を可能にするカスタム入力レンダラーを書くべきですmultiple
マリウス

1
こんにちは@SanderMangel ...励ましてくれてありがとう..:)
VIVEK-MDU

回答:


6

私のコメントを続け、必要なものを達成する方法は次のとおりです。
画像フィールド用のカスタムレンダラーを作成する必要があります。このため、モジュールにこのクラスを作成します。

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

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

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

$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
        ));

それでおしまい。
プレースホルダー([Module]およびその他)を自分の値に置き換えることを忘れないでください。
[編集]
これは基本的に、必要な入力タイプをオーバーライド/追加する方法です。元の入力クラスを拡張する独自のクラスを作成し(またはVarien_Data_Form_Element_Abstract新しいクラスを追加する場合)、それを_prepareForm


こんにちは@マリウス...適切なガイドをありがとうu ..私は1つの疑問を持っています..参照[エンティティ]とクラスで与えられたエンティティですか?説明していただけますか
VIVEK-MDU 2013

@ VIVEK-MDU。エンティティはあなたが編集しているものです。それは製品でも記事でも構いません...あなたのフォームのクラス名は何ですか?それから私はあなたに実体がどうあるべきかを伝えることができます。理論的には何でもかまいません。クラス名から削除することもできますが、コードの一貫性を保つために追加しました。
マリウス

@Marius for multiple i画像をアップロードするために個別のファイルボタンを作成する必要がありますか?または複数の画像を処理する方法
Keyur Shah

@Marius:これは私にはうまくいきませんでした。1つの画像のアップロードを読み込みます。何か提案はありますか?
スケシニ2015

1
優秀な !この質問は保護する必要があります
Ahsan Horani 2016年

0

この方法を使用して同じことを行いますAw_blogが、モジュールを使用します が、

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

私の投稿のブログのページフォームは白です。

PS:1つの画像のフィールドアップロードは成功ですが、複数の場合は成功しません。

mymodule ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.