0

我正在开发磁电机 1.7 版本。在此我创建了一个扩展。现在,我需要从我创建的表单上传多个图像。我在表单中有一个浏览器按钮现在我需要从该按钮一次上传多个图像。

谁能帮我?

下面是我的表格:

protected function _prepareForm() {

    $form = new Varien_Data_Form();
    $this->setForm($form);
    $fieldset = $form->addFieldset('book_form', array('legend' => Mage::helper('test')->__('Book Content')));

    $fieldset->addField('title', 'text', array(
        'label' => Mage::helper('test')->__('Title'),
        'class' => 'required-entry',
        'required' => true,
        'name' => 'title[]',
    ));
    $categoryArray = Mage::getSingleton('test/category')->getOptionArray();
    $fieldset->addField('category_id', 'select', array(
        'label' => Mage::helper('test')->__('Category'),
        'required' => true,
        'class' => 'required-entry',
        'name' => 'category_id[]',
        'values' => $categoryArray,
    ));

    **$fieldset->addField('image', 'file', array(
        'label' => Mage::helper('test')->__('Image'),
        'name' => 'image[]',
        'multiple' => 'multiple',
        'mulitple' => true,
    ));**

    $fieldset->addField('priority', 'text', array(
        'label' => Mage::helper('lookbook')->__('Order of Display'),
        'name' => 'priority[]',
    ));
    $fieldset->addField('hiddenData', 'hidden', array(
        'class' => Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK) . '_' . Mage::registry('book_data')->getId(),
    ));

    $statusArray = Mage::getSingleton('lookbook/status')->getOptionArray();
    $fieldset->addField('publish', 'select', array(
        'label' => Mage::helper('lookbook')->__('Status'),
        'name' => 'publish[]',
        'values' => $statusArray,
    ));

    if (Mage::getSingleton('adminhtml/session')->getBookData()) {
        $form->setValues(Mage::getSingleton('adminhtml/session')->getBookData());
        Mage::getSingleton('adminhtml/session')->setBookData(null);
    } elseif (Mage::registry('book_data')) {
        $form->setValues(Mage::registry('book_data')->getData());
    }


    return parent::_prepareForm();
}
4

2 回答 2

0

看看 Mage_Adminhtml_controllers_Catalog

您会找到对 media_image 属性的引用

|| $attribute->getFrontend()->getInputType() == 'media_image'

您可以按照 adminhtml 中的示例来获取允许为前端上传多个图像的网格。在后端,您需要自己的资源模型,或者为可以遵循目录图像的后端和前端模型的属性声明的后端源模型......在这些类中,您将找到后端模型如何处理的示例保存图像。

于 2013-12-24T17:48:17.747 回答
0

表单.phtml

<form action="<?php echo Mage::getBaseUrl()."multipleimageupload/index/save"; ?>" method="POST" enctype="multipart/form-data">
    <input type="file" name="filename[]" multiple="multiple"> 
    <input type="submit" name="save">
</form>

**

行动

**

public function saveAction(){

        $count= count($_FILES['filename']['name']);

        for ($i=0; $i < $count; $i++) { 

            if(isset($_FILES['filename']['name'][$i]) and (file_exists($_FILES['filename']['tmp_name'][$i]))){                             
                try{
                        // $_FILES['filename']['name'][$i];
                        $path = Mage::getBaseDir('media') . DS . 'multipleimageupload' . DS;
                        // $uploader = new Varien_File_Uploader('filename');
                        $uploader = new Varien_File_Uploader(
                            array(
                                'name' => $_FILES['filename']['name'][$i],
                                'type' => $_FILES['filename']['type'][$i],
                                'tmp_name' => $_FILES['filename']['tmp_name'][$i],
                                'error' => $_FILES['filename']['error'][$i],
                                'size' => $_FILES['filename']['size'][$i]
                            )
                        );

                        $uploader->setAllowedExtensions(array('jpg','png','gif','jpeg'));
                        $uploader->setAllowRenameFiles(false);
                        $uploader->setFilesDispersion(false);
                        $destFile = $path.$_FILES['filename']['name'][$i];
                        $filename = $uploader->getNewFileName($destFile);
                        $uploader->save($path, $filename);
                        $data['img'] = $_FILES['filename']['name'][$i];
                    }catch(Exception $e) {
                        // echo "<pre>";
                        // print_r($e);

                    }
                }else{
                    if(isset($data['filename']['delete'][$i]) && $postData['filename']['delete'][$i] == 1)
                    $data['filename'] = '';
                    else
                    unset($data['filename'][$i]);
                }
            }
        }
于 2017-04-21T07:06:55.920 回答